2010/4/14 Artyom Tarasenko <atar4q...@googlemail.com>: > 2010/4/3 Blue Swirl <blauwir...@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 -- Regards, Artyom Tarasenko solaris/sparc under qemu blog: http://tyom.blogspot.com/