FreeBSD/MIPS project status update
Irfan Zia
irfanzia at gmail.com
Thu May 10 02:36:50 UTC 2007
Hi Gonzo, all
I plan to work on a FreeBSD R7K Mips port in Big-endian mode. The
other catch is that I want to do my development on Linux. I have
looked at the makefiles and am fairly confident that they can be
worked out with pmake on Linux (Fedora).
My real problem is how do I force the built objects/binaries into
a Big-Endian UFS file-system. I don't have a BE machine. Is it
possible, to somehow use files/dirs built on a an LE system to be
bundled into a BE UFS filesystem ? Any tools/hints.
thanks!
-Irfan
On 3/30/07, Oleksandr Tymoshenko <gonzo at univ.kiev.ua> wrote:
> On behalf of FreeBSD/MIPS team I'm proud to announce that
> project has reached single-user stage. On the moment FreeBSD/MIPS
> runs only in malta board emulation mode of GXemul though adm5120
> support is on it's way and people with real MIPS-based hardware
> can start playing with latest repo snapshot bringing FreeBSD on it.
>
> Many thanks to all who contributed with their time, efforts and
> experience. Especially to #bsdmips crowd for patience to newbies :)
>
> Attached mips.txt is a "recording" of sample GXemul session.
> Current p4 repo snapshot: http://kanar.ci0.org/mips2.tar.gz
> Check http://wiki.freebsd.org/FreeBSD/mips for sample build script
> P4 URL:
> http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/mips2/...
>
> --
> gonzo
>
>
> GXemul 0.4.1 Copyright (C) 2003-2006 Anders Gavare
> Read the source code and/or documentation for other Copyright messages.
>
> Simple setup...
> net: simulating 10.0.0.0/8 (max outgoing: TCP=100, UDP=100)
> simulated gateway: 10.0.0.254 (60:50:40:30:20:10)
> using nameserver 192.168.0.1
> machine "default":
> memory: 64 MB
> cpu0: 4Kc (I+D = 16+16 KB)
> machine: MALTA (evbmips, little endian)
> bootstring: kernel
> diskimage: /usr/home/gonzo/FreeBSD/mips.img
> IDE DISK id 0, read/write, 512 MB (1048576 sectors)
> loading /tftpboot/kernel
> starting cpu0 at 0x80127420 (gp=0x8033e180)
> -------------------------------------------------------------------------------
>
> GXemul> c
> entry: mips_init()
> picache_stride = 4096
> picache_loopcount = 4
> pdcache_stride = 4096
> pdcache_loopcount = 4
> mips_cache_ops.mco_pdcache_wbinv_all == 0x802dcdb0
> Exception vector at 80000000 almost out of space
> Kernel page table maps 16384 4K pages and is 511K
> KDB: debugger backends: ddb
> KDB: current backend: ddb
> cp: (null)
> cannot determine clock frequency, defaulting to 10MHz
> Copyright (c) 1992-2006 The FreeBSD Project.
> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
> The Regents of the University of California. All rights reserved.
> FreeBSD 7.0-CURRENT #65: Fri Mar 30 19:03:48 EEST 2007
> gonzo at jeeves.bluezbox.com:/home/gonzo/FreeBSD/mips.build/mips/home/gonzo/FreeBSD/p4/mips2/src/sys/MALTA
> cpu0: MIPS Technologies processor v1.128
> MMU: Standard TLB, 16 entries
> L1 i-cache: 2 ways of 512 sets, 16 bytes per line
> L1 d-cache: 2 ways of 512 sets, 16 bytes per line
> clock0: <Generic MIPS32 ticker> on motherboard
> clock0: [FAST]
> gt0: <GT64120 chip> on motherboard
> pcib0: <GT64120 PCI bridge> on gt0
> [ 8259: TODO: Level triggered (MCA bus) ]
> [ 8259: WARNING: Bit 2 set ]
> [ 8259: TODO: Level triggered (MCA bus) ]
> [ 8259: WARNING: Bit 2 set ]
> pcib0: [FAST]
> pci0: <PCI bus> on pcib0
> uart0: <8250 or 16450 or compatible> on obio0
> uart0: [FAST]
> uart0: console (115200,n,8,1)
> pci0: <bridge, PCI-ISA> at device 9.0 (no driver attached)
> atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376 at device 9.1 on pci0
> ata0: <ATA channel 0> on atapci0
> ata0: WARNING - DMA allocation failed, disabling DMA
> ata1: <ATA channel 1> on atapci0
> ata1: WARNING - DMA allocation failed, disabling DMA
> Timecounter "MIPS32" frequency 10000000 Hz quality 800
> Timecounters tick every 10.000 msec
> ad0: 514MB <mips.img 1.0> at ata0-master PIO4
> Trying to mount root from ufs:ad0s1a
> warning: no time-of-day clock registered, system time will not be set accurately
> Enter full pathname of shell or RETURN for /bin/sh:
> # mount -o rw /
> # hostname mips.bluezbox.com
> # uname -a
> FreeBSD mips.bluezbox.com 7.0-CURRENT FreeBSD 7.0-CURRENT #65: Fri Mar 30 19:03:48 EEST 2007 gonzo at jeeves.bluezbox.com:/home/gonzo/FreeBSD/mips.build/mips/home/gonzo/FreeBSD/p4/mips2/src/sys/MALTA mips
> # cd /root
> # ls
> .cshrc .profile args.c hello.c
> .login Makefile hello signal.c
> # cat Makefile
> CFLAGS=-msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32
> CC=cc
>
> all: hello signal args
>
> hello: hello.c
> $(CC) $(CFLAGS) -o hello hello.c
>
> signal: signal.c
> $(CC) $(CFLAGS) -o signal signal.c
>
> args: args.c
> $(CC) $(CFLAGS) -o args args.c
>
> clean:
> rm -f signal hello args
> # cat hello.c
> #include <stdio.h>
>
> int main(int argc, char * argv[])
> {
> printf("Hello world\n");
> }
> # cat args.c
> #include <stdio.h>
>
> int main(int argc, char * argv[])
> {
> int i ;
>
> printf("Arguments: %d\n", argc);
> for(i = 0; i < argc; i++) {
> printf("#%d == '%s'\n", i, argv[i]);
> }
> }
> # cat signal.c
> #include <stdio.h>
> #include <signal.h>
>
> void sig_int(int signum)
> {
> printf("Interrupted!\n");
> exit(0);
> }
>
> void sig_general(int signum)
> {
> printf("Signal: %d!\n", signum);
> }
>
> int main(int argc, char * argv[])
> {
> int i = 0;
> signal(SIGINT, sig_int);
> signal(SIGUSR1, sig_general);
> signal(SIGUSR2, sig_general);
> while(i < 10) {
> sleep(1);
> if(i % 2)
> kill(getpid(), SIGUSR1);
> else
> kill(getpid(), SIGUSR2);
> printf(">> %d\n", i++);
> }
> kill(getpid(), SIGINT);
> i = 0;
> while(i < 10) {
> printf(">> %d\n", i++);
> sleep(1);
> }
> }
> # make
> cc -msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32 -o signal signal.c
> cc -msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32 -o args args.c
> # make clean
> rm -f signal hello args
> # make
> cc -msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32 -o hello hello.c
> cc -msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32 -o signal signal.c
> cc -msoft-float -G0 -mabicalls -EL -Wl,-EL -static -march=mips32 -o args args.c
> # ls -la
> total 2340
> drwxr-xr-x 2 root wheel 512 Mar 30 19:41 .
> drwxr-xr-x 18 root wheel 512 Mar 27 13:27 ..
> -rw-r--r-- 2 root wheel 801 Mar 27 13:27 .cshrc
> -rw-r--r-- 1 root wheel 293 Mar 27 13:27 .login
> -rw-r--r-- 2 root wheel 251 Mar 27 13:27 .profile
> -rw-r--r-- 1 root wheel 283 Mar 30 16:09 Makefile
> -rwxr-xr-x 1 root wheel 367585 Mar 30 19:40 args
> -rw-r--r-- 1 root wheel 173 Mar 30 19:14 args.c
> -rwxr-xr-x 1 root wheel 367586 Mar 30 19:40 hello
> -rw-r--r-- 1 root wheel 91 Mar 27 18:17 hello.c
> -rwxr-xr-x 1 root wheel 372613 Mar 30 19:40 signal
> -rw-r--r-- 1 root wheel 552 Mar 27 17:42 signal.c
> # file hello args signal
> hello: ELF 32-bit LSB executable, MIPS, version 1 (FreeBSD), for FreeBSD 7.0 (700018), statically linked, for FreeBSD 7.0 (700018), not stripped
> args: ELF 32-bit LSB executable, MIPS, version 1 (FreeBSD), for FreeBSD 7.0 (700018), statically linked, for FreeBSD 7.0 (700018), not stripped
> signal: ELF 32-bit LSB executable, MIPS, version 1 (FreeBSD), for FreeBSD 7.0 (700018), statically linked, for FreeBSD 7.0 (700018), not stripped
> # ./hello
> Hello world
> # ./args this is a test
> Arguments: 5
> #0 == './args'
> #1 == 'this'
> #2 == 'is'
> #3 == 'a'
> #4 == 'test'
> # ./signal
> Signal: 31!
> >> 0
> Signal: 30!
> >> 1
> Signal: 31!
> >> 2
> Signal: 30!
> >> 3
> Signal: 31!
> >> 4
> Signal: 30!
> >> 5
> Signal: 31!
> >> 6
> Signal: 30!
> >> 7
> Signal: 31!
> >> 8
> Signal: 30!
> >> 9
> Interrupted!
> # who am i
> who: /var/run/utmp: No such file or directory
> # id
> uid=0(root) gid=0(wheel) groups=0(wheel)
> # ifconfig -a
> lo0: flags=8008<LOOPBACK,MULTICAST> mtu 16384
> # ifconfig lo0 127.0.0.1
> # ifconfig -a
> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
> inet 127.0.0.1 netmask 0xff000000
> # ping -c 10 127.0.0.1
> PING 127.0.0.1 (127.0.0.1): 56 data bytes
> 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=2.470 ms
> 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=1.646 ms
> 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=1.645 ms
> 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=1.643 ms
> 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=1.645 ms
> 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=1.641 ms
> 64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=1.646 ms
> 64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=1.643 ms
> 64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=1.643 ms
> 64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=1.645 ms
>
> --- 127.0.0.1 ping statistics ---
> 10 packets transmitted, 10 packets received, 0% packet loss
> round-trip min/avg/max/stddev = 1.641/1.727/2.470/0.248 ms
> # halt -p
> Waiting (max 60 seconds) for system process `vnlru' to stop...done
> Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
> Waiting (max 60 seconds) for system process `syncer' to stop...
> Syncing disks, vnodes remaining...0
>
> _______________________________________________
> freebsd-mips at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mips
> To unsubscribe, send any mail to "freebsd-mips-unsubscribe at freebsd.org"
>
>
More information about the freebsd-mips
mailing list