qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] [RESEND] SH4 : sleep instruction bug fix (was Re: [Qemu-devel] [


From: Shin-ichiro KAWASAKI
Subject: [PATCH] [RESEND] SH4 : sleep instruction bug fix (was Re: [Qemu-devel] [PATCH] SH4: Serial controller improvement and sleep op bug fix)
Date: Mon, 15 Sep 2008 14:28:53 +0900
User-agent: Thunderbird 2.0.0.16 (Windows/20080708)

Thank you for your response!

Aurelien Jarno wrote:
On Sun, Sep 07, 2008 at 11:34:10PM +0900, Shin-ichiro KAWASAKI wrote:

Next time could you please send two different patches, so that one patch
doesn't block the other.

I see. I'll do so next time.  Working with this patch, I'll resend twice to
divide into sleep instruction part and serial part.


Index: target-sh4/helper.h
===================================================================
--- target-sh4/helper.h (revision 5132)
+++ target-sh4/helper.h (working copy)
@@ -6,7 +6,7 @@
 DEF_HELPER(void, helper_raise_illegal_instruction, (void))
 DEF_HELPER(void, helper_raise_slot_illegal_instruction, (void))
 DEF_HELPER(void, helper_debug, (void))
-DEF_HELPER(void, helper_sleep, (void))
+DEF_HELPER(void, helper_sleep, (int32_t))
 DEF_HELPER(void, helper_trapa, (uint32_t))
DEF_HELPER(uint32_t, helper_addv, (uint32_t, uint32_t))
Index: target-sh4/op_helper.c
===================================================================
--- target-sh4/op_helper.c      (revision 5132)
+++ target-sh4/op_helper.c      (working copy)
@@ -94,10 +94,11 @@
     cpu_loop_exit();
 }
-void helper_sleep(void)
+void helper_sleep(int32_t next_pc)

Given then env->pc is unsigned, I think it should be uint32_t instead of
int32_t here. Same in helper.h

This is my mistake. Thanks for pointing it out.
This mail is attached with new patch of sleep instruction part.

Regards,
Shin-ichiro KAWASAKI


Index: trunk/target-sh4/helper.h
===================================================================
--- trunk/target-sh4/helper.h   (revision 5219)
+++ trunk/target-sh4/helper.h   (working copy)
@@ -6,7 +6,7 @@
DEF_HELPER(void, helper_raise_illegal_instruction, (void))
DEF_HELPER(void, helper_raise_slot_illegal_instruction, (void))
DEF_HELPER(void, helper_debug, (void))
-DEF_HELPER(void, helper_sleep, (void))
+DEF_HELPER(void, helper_sleep, (uint32_t))
DEF_HELPER(void, helper_trapa, (uint32_t))

DEF_HELPER(uint32_t, helper_addv, (uint32_t, uint32_t))
Index: trunk/target-sh4/op_helper.c
===================================================================
--- trunk/target-sh4/op_helper.c        (revision 5219)
+++ trunk/target-sh4/op_helper.c        (working copy)
@@ -94,10 +94,11 @@
    cpu_loop_exit();
}

-void helper_sleep(void)
+void helper_sleep(uint32_t next_pc)
{
    env->halted = 1;
    env->exception_index = EXCP_HLT;
+    env->pc = next_pc;
    cpu_loop_exit();
}

Index: trunk/target-sh4/translate.c
===================================================================
--- trunk/target-sh4/translate.c        (revision 5219)
+++ trunk/target-sh4/translate.c        (working copy)
@@ -505,7 +505,7 @@
        return;
    case 0x001b:                /* sleep */
        if (ctx->memidx) {
-               tcg_gen_helper_0_0(helper_sleep);
+               tcg_gen_helper_0_1(helper_sleep, tcg_const_i32(ctx->pc + 2));
        } else {
                tcg_gen_helper_0_0(helper_raise_illegal_instruction);
                ctx->bstate = BS_EXCP;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]