[OpenBIOS] OBP under qemu-system-sparc64

Artyom Tarasenko atar4qemu at googlemail.com
Wed Apr 14 18:15:01 CEST 2010


2010/4/14 Artyom Tarasenko <atar4qemu at googlemail.com>:
> 2010/4/3 Blue Swirl <blauwirbel at 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/



More information about the OpenBIOS mailing list