[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-discuss] 答复: signal SIGILL, Illegal instruction for "mtc0 zero, c
From: |
Zhangwen (Esan) |
Subject: |
[Qemu-discuss] 答复: signal SIGILL, Illegal instruction for "mtc0 zero, c0_cause" |
Date: |
Tue, 18 Apr 2017 01:34:39 +0000 |
>On 14 April 2017 at 08:31, Zhangwen (Esan) <address@hidden> wrote:
>> Hi,
>> When I run a binary with qemu-2.7.1, I found it report a error:
>> Program received signal SIGILL, Illegal instruction.
>> Then I gdb it, the scene is as follows:
>> (gdb) si
>>
>> Program received signal SIGILL, Illegal instruction.
>> _start () at ../newlib-2.2.0/libgloss/mips/crt0.S:92
>> 92 nop
>> (gdb) disass
>> Dump of assembler code for function _start:
>> => 0x00000040 <+0>: mtc0 zero,c0_cause
>> 0x00000044 <+4>: nop
>>
>> The binary is compiled with newlib-2.2.0, but it works with glibc-2.20.
>> "mtc0" instruction can not be recognized by qemu-2.7.1 or any others?
>> So I have no idea what happened and could anybody explain the reason?
>
>Are you running a single binary under qemu's user emulation, or an entire MIPS
>kernel in qemu's system emulation and some binary inside that, or are you
>running this as a bare-metal binary in system emulation?
>
>If you're just running a single binary with usermode emulation, I think this
>is expected -- c0_cause is a system register which can only be accessed if
>you're the kernel, and qemu's usermode emulation runs the guest code as a user
>process, so SIGILL is the correct response.
>
>thanks
>-- PMM
Yeah, I am running a single binary under qemu's user emulation and the binary
is compiled with mips-sde-gcc.
The command line is as follows:
###:~/qemu/$ qemu-mips -cpu 34Kf ./test
I understand your meanings but how to running it? Using qemu-system-mips or
Adding MIPS kernel or some binary? For example:
- qemu-system-mips -kernel xxxx ...
Cheers,
Zhangwen