Mark Cave-Ayland wrote:
Does anyone know what this second CPU MMU node is used for? Should the /chosen "mmu" property point to /virtual-memory instead? Or should this node be an exact copy of /virtual-memory?
So I moved all of the MMU methods under /virtual-memory and changed the /chosen "mmu" property to point there, and now both Milax OpenSolaris and Solaris 9 get further:
Solaris 9:
finddevice("cdrom:f") = 0xffe2f9e0 getproplen(0xffe2f9e0, "device_type") = 0x00000006 getproplen(0xffe2f9e0, "device_type") = 0x00000006 getprop(0xffe2f9e0, "device_type", 0x00133878, 6) = service getprop: possible argument error (0 1) 6 0x00133878 62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __ block. open("cdrom:f") = 0x00000000 getproplen(0xffe1dd98, "stdout") = 0x00000004 getproplen(0xffe1dd98, "stdout") = 0x00000004 getprop(0xffe1dd98, "stdout", 0x001376f8, 4) = service getprop: possible argument error (0 1) 4 0x001376f8 ff e8 83 b0 __ __ __ __ __ __ __ __ __ __ __ __ ��.� Cannot open cdrom:f panic - boot: ufsboot: cannot determine filesystem type of root device. exit() EXIT -1 >
- Looks like the CIF open of "cdrom:f" fails which is strange because it works fine from the Forth prompt.
Milax:
interpret 'h# 70000000000 constant kmem64-base h# 70000252000 constant kmem64-end h# ffffffffffc00000 constant kmem64-pagemask h# e0000000064016b6 constant kmem64-template : kmem64-tte ( addr cnum -- false | tte-data true ) if ( addr ) drop false exit then ( false ) dup kmem64-base kmem64-end within if ( addr ) kmem64-pagemask and ( addr' ) kmem64-base - ( addr' ) kmem64-template + handle_calls return: Unhandled Exception 0x0000070000242000 PC = 0x000000000101eb3c NPC = 0x000000000101eb40 Stopping execution
- Now this is very interesting. Looks like we are missing a Forth pgmap@ function which according to the OF spec does this:
pgmap@ ( virt -- pme ) The page map entry pme corresponds to the virtual address virt.
I think that this requires some kind of Forth wrapper around one of the OFMEM functions to pull out a TTE?
ATB,
Mark.