Blue Swirl schrieb:
> On Tue, Dec 29, 2009 at 3:09 PM, Stefan Weil <w...@mail.berlios.de> wrote:
>   
>> Test environment:
>>
>> * ppc-softmmu/qemu-system-ppc running on x86_64 host
>> * emulated ppc is running debian lenny
>>
>>
>>
>> While debugging on the emulated ppc (each time when
>> a shared library is loaded after "r" command?),
>> qemu-system-ppc prints this error message:
>>
>> invalid/unsupported opcode: 00 - 00 - 00 (00000000) 4800fa44 1
>>
>>
>>
>> If logging is enabled, the error message goes to qemu.log:
>>
>> IN:
>> 0xc0013488:  nop
>> 0xc001348c:  rlwinm  r3,r3,0,0,19
>> 0xc0013490:  li      r4,128
>> 0xc0013494:  mtctr   r4
>> 0xc0013498:  mr      r6,r3
>> 0xc001349c:  dcbst   r0,r3
>>
>> invalid/unsupported opcode: 00 - 00 - 00 (00000000) 4800fa44 1
>> IN:
>> 0x4800fa40:  twge    r2,r2
>> 0x4800fa44:  .long 0x0
>>
>>
>>
>> The debugger on the ppc system shows the "instruction"
>> which triggers the error message:
>>
>> (gdb) disas
>> Dump of assembler code for function _dl_debug_state:
>> 0x4800fa40 <_dl_debug_state+0>: blr
>> End of assembler dump.
>> (gdb) x 0x4800fa40
>> 0x4800fa40 <_dl_debug_state>:   0x4e800020
>> (gdb) x/2x 0x4800fa40
>> 0x4800fa40 <_dl_debug_state>:   0x4e800020      0x00000000
>>
>>
>>
>> The unsupported opcode is 0, and it follows function
>> _dl_debug_state.
>>
>> Debugging in an emulated system should not trigger
>> error messages on the host (denial-of-service).
>>
>> Why does qemu try to interpret the word at 0x4800fa44?
>>     
>
> Wild guess: for PPC, translation is not stopped when we reach a branch
> but until the end of the current page. Please try the attached patch.
>   

Applied to host side (qemu-system-ppc), no visible change
(no malfunction, but still invalid opcode).

Stefan

>   
>> Why does qemu show "twge r2,r2", not "blr"?
>>     
>
> Maybe read access has been disabled for the page?
>   



Reply via email to