2010/4/3 Blue Swirl blauwirbel@gmail.com:
could be interesting to see what OBP from a real machine would think of the QEMU machine.
it doesn't live long enough to think something (must be something trivial):
$ sparc64-softmmu/qemu-system-sparc64 -bios u1_v3.11.1.bin -nographic -cpu 'TI UltraSparc I' -d in_asm,int,cpu -------------- IN: 0x000001fff0000020: ldxa [ %g0 ] (69), %g2 0x000001fff0000024: stxa %g0, [ %g0 ] (69) 0x000001fff0000028: b,a 0x1fff0001d88
-------------- IN: 0x000001fff0001d88: rdpr %cwp, %g1 0x000001fff0001d8c: wrpr 0, %cwp 0x000001fff0001d90: wrpr %g1, 0, %cwp 0x000001fff0001d94: call 0x1fff0000210 0x000001fff0001d98: add %g0, %g0, %o0
-------------- IN: 0x000001fff0000210: mov 0x1ff, %o1 ! 0x1ff 0x000001fff0000214: sllx %o1, 0x20, %o1 0x000001fff0000218: sethi %hi(0xf1300000), %o2 0x000001fff000021c: or %o2, %o1, %o2 0x000001fff0000220: stba %o0, [ %o2 ] (21) 0x000001fff0000224: add %o2, 4, %o2 0x000001fff0000228: lduba [ %o2 ] (21), %o1 0x000001fff000022c: sllx %o1, 8, %o0 0x000001fff0000230: inc %o2 0x000001fff0000234: lduba [ %o2 ] (21), %o1 0x000001fff0000238: or %o0, %o1, %o0 0x000001fff000023c: sllx %o0, 8, %o0 0x000001fff0000240: inc %o2 0x000001fff0000244: lduba [ %o2 ] (21), %o1 0x000001fff0000248: or %o0, %o1, %o0 0x000001fff000024c: sllx %o0, 8, %o0 0x000001fff0000250: inc %o2 0x000001fff0000254: lduba [ %o2 ] (21), %o1 0x000001fff0000258: or %o0, %o1, %o0 0x000001fff000025c: retl 0x000001fff0000260: nop
qemu: fatal: Trap 0x0032 while trap level (5) >= MAXTL (5), Error state pc: 000001fff0000220 npc: 000001fff0000224
General Registers: %g0-3: 0000000000000000 0000000000000007 0000000000000000 0000000000000000 %g4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Current Register Window: %o0-3: 0000000000000000 000001ff00000000 000001fff1300000 0000000000000000 %o4-7: 0000000000000000 0000000000000000 0000000000000000 000001fff0001d94 %l0-3: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %l4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %i0-3: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %i4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Floating Point Registers: %f00: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f04: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f08: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f12: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f16: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f20: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f24: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f28: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f32: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f36: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f40: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f44: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f48: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f52: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f56: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f60: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 pstate: 00000035 ccr: 00 (icc: ---- xcc: ----) asi: 00 tl: 5 pil: 0 cansave: 0 canrestore: 0 otherwin: 0 wstate: 0 cleanwin: 0 cwp: 7 fsr: 0000000000000000 y: 0000000000000000 fprs: 0000000000000000
Just in case, the properties of the real machine: ok cd / ok .properties breakpoint-trap 0000007f #size-cells 00000002 energystar-v2 model SUNW,501-2486 name SUNW,Ultra-1 clock-frequency 04f9f54d banner-name Sun Ultra 1 UPA/SBus (UltraSPARC 167MHz) device_type upa
ok cd /SUNW,UltraSPARC ok .properties manufacturer# 00 00 00 17 implementation# 00 00 00 10 mask# 00 00 00 40 sparc-version 00 00 00 09 ecache-associativity 00 00 00 01 ecache-line-size 00 00 00 40 ecache-size 00 08 00 00 #dtlb-entries 00 00 00 40 dcache-associativity 00 00 00 01 dcache-line-size 00 00 00 20 dcache-size 00 00 40 00 #itlb-entries 00 00 00 40 icache-associativity 00 00 00 02 icache-line-size 00 00 00 20 icache-size 00 00 40 00 upa-portid 00000000 clock-frequency 09f3ea9a reg 000001c0 00000000 00000000 00000008 device_type cpu name SUNW,UltraSPARC
2010/4/14 Artyom Tarasenko atar4qemu@googlemail.com:
2010/4/3 Blue Swirl blauwirbel@gmail.com:
could be interesting to see what OBP from a real machine would think of the QEMU machine.
it doesn't live long enough to think something (must be something trivial):
$ sparc64-softmmu/qemu-system-sparc64 -bios u1_v3.11.1.bin -nographic
-cpu 'TI UltraSparc I' -d in_asm,int,cpu
IN: 0x000001fff0000020: ldxa [ %g0 ] (69), %g2 0x000001fff0000024: stxa %g0, [ %g0 ] (69) 0x000001fff0000028: b,a 0x1fff0001d88
IN: 0x000001fff0001d88: rdpr %cwp, %g1 0x000001fff0001d8c: wrpr 0, %cwp 0x000001fff0001d90: wrpr %g1, 0, %cwp 0x000001fff0001d94: call 0x1fff0000210 0x000001fff0001d98: add %g0, %g0, %o0
IN: 0x000001fff0000210: mov 0x1ff, %o1 ! 0x1ff 0x000001fff0000214: sllx %o1, 0x20, %o1 0x000001fff0000218: sethi %hi(0xf1300000), %o2 0x000001fff000021c: or %o2, %o1, %o2 0x000001fff0000220: stba %o0, [ %o2 ] (21)
and on the real machine there seems to be some device connected to this address: ok 1fff1300000 bypass-asi spacel@ . Data Access Error ok cpu-afsr@ . 104000000 ok 1fff1300000 bypass-asi spacel@ . Data Access Error ok cpu-afar@ . cpu-afsr@ . 1fff1300000 104000000 But, with single bytes it works: ok 1fff1300000 bypass-asi spacec@ . 64 ok 1fff1300001 bypass-asi spacec@ . 64 ok 1fff1300002 bypass-asi spacec@ . 64 ok 1fff1300003 bypass-asi spacec@ . 64
If I put pseudodevices there it still doesn't get too far: #### skip unassigned mem access to 000001fff1300000 #### skip unassigned mem access to 000001fff1300004 #### skip unassigned mem access to 000001fff1300005 #### skip unassigned mem access to 000001fff1300006 #### skip unassigned mem access to 000001fff1300007 #### skip unassigned mem access to 000001fff1900000 #### skip unassigned mem access to 000001fff1100004 #### skip unassigned mem access to 000001fff1100004 #### skip unassigned mem access to 000001fff1100000 #### skip unassigned mem access to 000001fff1300007 #### skip unassigned mem access to 000001fff1200001
then it hangs. If I don't do it for the last one (1fff1200001) then qemu says Aborted.
Since it's qemu issue, I won't post the further results on the OpenBIOS mailing list. qemu-devel should be enough.
0x000001fff0000224: add %o2, 4, %o2 0x000001fff0000228: lduba [ %o2 ] (21), %o1 0x000001fff000022c: sllx %o1, 8, %o0 0x000001fff0000230: inc %o2 0x000001fff0000234: lduba [ %o2 ] (21), %o1 0x000001fff0000238: or %o0, %o1, %o0 0x000001fff000023c: sllx %o0, 8, %o0 0x000001fff0000240: inc %o2 0x000001fff0000244: lduba [ %o2 ] (21), %o1 0x000001fff0000248: or %o0, %o1, %o0 0x000001fff000024c: sllx %o0, 8, %o0 0x000001fff0000250: inc %o2 0x000001fff0000254: lduba [ %o2 ] (21), %o1 0x000001fff0000258: or %o0, %o1, %o0 0x000001fff000025c: retl 0x000001fff0000260: nop
qemu: fatal: Trap 0x0032 while trap level (5) >= MAXTL (5), Error state pc: 000001fff0000220 npc: 000001fff0000224
General Registers: %g0-3: 0000000000000000 0000000000000007 0000000000000000 0000000000000000 %g4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Current Register Window: %o0-3: 0000000000000000 000001ff00000000 000001fff1300000 0000000000000000 %o4-7: 0000000000000000 0000000000000000 0000000000000000 000001fff0001d94 %l0-3: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %l4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %i0-3: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 %i4-7: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
Floating Point Registers: %f00: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f04: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f08: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f12: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f16: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f20: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f24: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f28: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f32: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f36: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f40: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f44: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f48: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f52: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f56: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 %f60: 000000000.000000 000000000.000000 000000000.000000 000000000.000000 pstate: 00000035 ccr: 00 (icc: ---- xcc: ----) asi: 00 tl: 5 pil: 0 cansave: 0 canrestore: 0 otherwin: 0 wstate: 0 cleanwin: 0 cwp: 7 fsr: 0000000000000000 y: 0000000000000000 fprs: 0000000000000000
Just in case, the properties of the real machine: ok cd / ok .properties breakpoint-trap 0000007f #size-cells 00000002 energystar-v2 model SUNW,501-2486 name SUNW,Ultra-1 clock-frequency 04f9f54d banner-name Sun Ultra 1 UPA/SBus (UltraSPARC 167MHz) device_type upa
ok cd /SUNW,UltraSPARC ok .properties manufacturer# 00 00 00 17 implementation# 00 00 00 10 mask# 00 00 00 40 sparc-version 00 00 00 09 ecache-associativity 00 00 00 01 ecache-line-size 00 00 00 40 ecache-size 00 08 00 00 #dtlb-entries 00 00 00 40 dcache-associativity 00 00 00 01 dcache-line-size 00 00 00 20 dcache-size 00 00 40 00 #itlb-entries 00 00 00 40 icache-associativity 00 00 00 02 icache-line-size 00 00 00 20 icache-size 00 00 40 00 upa-portid 00000000 clock-frequency 09f3ea9a reg 000001c0 00000000 00000000 00000008 device_type cpu name SUNW,UltraSPARC