disklabel -r -w fd0 floppy
としていたこと。disklabel -r -w /dev/rfd0a floppy
ってやらないと書けないのね ;-) 知らなかった。
isa_chipset_tag_t iba_ic(=> ia_ic => sc_ic)
に、I/O空間の0x480をmapしたhandleを入れて、
isadma.cでそれを使うようにしてみた。
:binutils ppc-makeでの環境変数を設定した状態で、 ./configure --prefix=/usr/local/PPC --host=powerpc-elf-netbsd \ --target=powerpc-elf-netbsd --build=i386-unknown-netbsd1.3A gmake gmake install :gcc setenv PATH /usr/local/Be/powerpc-elf-netbsd/bin:`printenv PATH` patch -p < gcc-2723-assert.diff ./configure \ --prefix=/usr/local/PPC \ --host=powerpc-elf-netbsd \ --target=powerpc-elf-netbsd --build=i386-unknown-netbsd1.3A gmake LANGUAGES="c c++" \ HOST_CC=/usr/local/bin/gcc \ GCC_FOR_TARGET=/usr/local/Be/powerpc-elf-netbsd/bin/gcc
ppc-strip --remove-section=.note ofwboot.elf
で
すぱっと切り取ろう。
psim -f tree-970207 ofwboot.elf
で起動だ。
hwpend = ipending & ~pcpl; /* Do now unmasked pendings */ここに、
hwpend &= 0x0fffffff;が必要。OpenBSD/powerpcでは、
hwpend &= ((1L << ICU_LEN) - 1);
ってなっている。
V.4 stack frames look like: SP----> +---------------------------------------+ | back chain to caller | 0 +---------------------------------------+ | caller's saved LR | 4 +---------------------------------------+ | Parameter save area (P) | 8 +---------------------------------------+ | Alloca space (A) | 8+P +---------------------------------------+ | Varargs save area (V) | 8+P+A +---------------------------------------+ | Local variable space (L) | 8+P+A+V +---------------------------------------+ | saved CR (C) | 8+P+A+V+L +---------------------------------------+ | Save area for GP registers (G) | 8+P+A+V+L+C +---------------------------------------+ | Save area for FP registers (F) | 8+P+A+V+L+C+G +---------------------------------------+ old SP->| back chain to caller's caller | +---------------------------------------+
/* Disable translation, machine check and recoverability: */ \ mfmsr 2; \ lis 3,(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@ha; \ addi 3,3,(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l; \ andc 2,2,3; \ mtmsr 2; \disableにしたいのならば、
lis 3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@ha; \ addi 3,3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l; \だろう。あと、これらのbitは(確か)全部下位16bitに収まっているので
andi. 2,2,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l;で良いはず。NetBSD/powerpcは、こうなっている。
/* First have to enable KERNEL mapping */ lis 31,KERNEL_SEGMENT@ha addi 31,31,KERNEL_SEGMENT@lこれ、NetBSD/powerpcだと、
/* First have to enable KERNEL mapping */ lis 31,KERNEL_SEGMENT@h ori 31,31,KERNEL_SEGMENT@lとなってます。
ex.X_add_number = (ex.X_add_number >> 16) & 0xffff;
ex.X_add_number = (((ex.X_add_number >> 16) & 0xffff) + ((ex.X_add_number >> 15) & 1));
lis 3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@ha; addi 3,3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l;のように、addiを使う場合 @ha を使用しなければならない。
lis 3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@h; ori 3,3,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l;のように、addiを使わないのならば、@h を使うべきである。
lis 3,xxx@ha lwz 3,xxx@l(3) is correct, while lis 3,xxx@h lwz 3,xxx@l(3) could access a different word (64k lower address than &xxx).
Unfortunately, we are not planning on doing anything to the BootROM of the BeBox to allow it to read various kernels, as we have long stopped production of the BeBox.
dd if=/dev/zero of=/be/home/be/swap bs=32k count=3072 /etc/fstab add: ariel:/be/home/be/swap none swap sw,nfsmntpt=/swap # swapctl -A
:binutils setenv PATH /usr/local/Be/powerpc-elf-netbsd/bin:`printenv PATH` ./configure --prefix=/usr/local/PPC --host=powerpc-elf-netbsd gmake gmake install # libiberty/Makefile # $(RANLIB) -> ppc-ranlib :gcc setenv PATH /usr/local/Be/powerpc-elf-netbsd/bin:`printenv PATH` ./configure \ --prefix=/usr/local/PPC \ --host=powerpc-elf-netbsd \ --target=powerpc-elf-netbsd --build=i386-unknown-netbsd1.2G gmake LANGUAGES=c HOST_CC=/usr/local/bin/gcc
NetBSD 1.2G (GENERIC) #34: Thu Aug 28 23:23:01 GMT 1997 sakamoto@ariel.cec.co.jp:/be/src/NetBSD/sys970801/arch/bebox/compile/GENERIC CPU: PowerPC 603e (Revision 400) real memory = 83886080 (81920K bytes) avail memory = 74727424 (72976K bytes) using 1024 buffers containing 4194304 bytes of memory mainbus0 (root) pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 pchb0: Motorola product 0x0001 (rev. 0x24) pcib0 at pci0 dev 11 function 0 pcib0: Intel 82378IB PCI-ISA Bridge (System I/O) (rev. 0x43) Symbios Logic 53c810 (SCSI mass storage, revision 0x02) at pci0 dev 12 function 0 not configured S3 Trio32/64 (VGA display) at pci0 dev 14 function 0 not configured isa0 at pcib0 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo lpt0 at isa0 port 0x378-0x37b irq 7 wdc0 at isa0 port 0x1f0-0x1f7 irq 14 wd0 at wdc0 drive 0:wd0: 335MB, 682 cyl, 16 head, 63 sec, 512 bytes/sec wd0: using 1-sector 16-bit pio transfers, chs addressing ed0 at isa0 port 0x300-0x31f irq 5 ed0: address 00:40:33:91:5b:37, type NE2000 (16-bit) pc0 at isa0 port 0x60-0x6f irq 1: color spkr0 at pc0 port 0x61 biomask 4000 netmask 4020 ttymask 40a2 ticks_per_sec = 8250000 hz = 100 ticks_per_intr = 82500 boot device: root device: ed0 dump device: file system (default generic): nfs nfs_boot: using network interface 'ed0' nfs_boot: client_addr=0xc0a80102 nfs_boot: server_addr=0xc0a80101 nfs_boot: hostname=bebox root on ariel:/be/home/be/root root time: 0x3405f4f1 init: copying out path `/sbin/init' 11
lis 1,0x42000000@h /* set dsisr<1> to flag pte not found */これ本当は、
lis 1,0x40000000@h /* set dsisr<1> to flag pte not found */となるべき。コメントにもbit 1(PowerPCでは上からbit 0,1,2...と呼ぶ) の説明しかしてないのに、書き間違えたのね...
/* * Check whether this task is allowed to have * this page. */ prot = entry->protection; if ((fault_type & (prot)) != fault_type) RETURN(KERN_PROTECTION_FAILURE);ここのところ。ここで、prot = VM_PROT_READ|VM_PROT_EXECUTEだが、 fault_type = VM_PROT_READ|VM_PROT_WRITE なので、returnしてしまい、 結局 vm_faultでページをmapできなくなってしまう。
static struct lconv ret; if (__mlocale_changed) { /* LC_MONETARY */ ret.int_curr_symbol = _CurrentMonetaryLocale->int_curr_symbol;この代入するところで、
exc_dsi|exc_user=0x6737c dsisr=0x42000000 at 0x5e7b8が発生する。
+ exec make -f /usr/local/Be/usr/share/mk/sys.mk -f Makefile creating accept.o : Assembler messages: :2: Error: Unrecognized opcode: `bnlsr' *** Error code 1というエラーが起きる。オペランド`bnlsr'なんてものはないので、 `bnslr'に修正する。書き間違いらしい。
#if 0 XXX NEEDS TO BE FIXED XXX comconstag = ???; #endifという様なところが二カ所 :) ここをfixしたらserial consoleが 動いた。
0xD0000000 〜 0xDFFFFFFF | ユーザー空間セグメント |
---|---|
0xE0000000 〜 0xEFFFFFFF | カーネル空間セグメント |
というようなアドレスを仮想アドレスとして使用している。
BAT0 | 0x00000000 | 0x00000000 | メインメモリ |
---|---|---|---|
BAT1 | 0x80000000 | 0x80000000 | PCI/ISA I/O |
BAT2 | 0xC0000000 | 0xC0000000 | PCI/ISA Memory |
mkisofs directry > /dev/fd0
loop: mftbu r30 #load from TBU mftb r31 #load from TBL mftbu r29 #load from TBU cmpw r30,r29 #see if 'old' = 'new' bne loop #loop if carry occurred
Processor Address Range | Definition |
---|---|
0x00000000 〜 0x7FFFFFFF | System memory space |
0x80000000 〜 0x807FFFFF | ISA/PCI I/O space |
0x80800000 〜 0x80FFFFFF | PCI config space |
0x81000000 〜 0xBF7FFFFF | PCI I/O space |
0xBF800000 〜 0xBFFFFFFF | Reserved |
0xC0000000 〜 0xFEFFFFFF | PCI memory space |
0xFF000000 〜 0xFFFFFFFF | ROM space |