qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 2/5] Add a PowerPC branch detector


From: Alexander Graf
Subject: [Qemu-devel] [PATCH 2/5] Add a PowerPC branch detector
Date: Thu, 17 Jan 2008 07:42:43 +0100
User-agent: Thunderbird 2.0.0.9 (X11/20070801)

PowerPCs have static instruction lengths, so writing an "in-between" brl
detection is quite simple on this architecture. You are welcome to write
something like this for any other platform, but if a compile doesn't
trigger build errors on PowerPC, it shouldn't on other platforms either,
as PowerPC has quite advanced branch instructions.

This patch is not mandatory, makes debugging a lot easier though.
Index: qemu-snapshot-2008-01-15_05/dyngen.c
===================================================================
--- qemu-snapshot-2008-01-15_05.orig/dyngen.c
+++ qemu-snapshot-2008-01-15_05/dyngen.c
@@ -1488,6 +1488,16 @@ void gen_code(const char *name, host_ulo
         if (get32((uint32_t *)p) != 0x4e800020)
             error("blr expected at the end of %s", name);
         copy_size = p - p_start;
+
+/* blr check for inline returns */
+
+        if(strstart(name, "op_", NULL) && !strstart(name, "op_exit", NULL)) {
+            for(p=p_start; p < p_end - 4; p+=4) {
+                if ((get32((uint32_t *)p) & 0xfc00fff0) == 0x4c000020) {
+                    error("Inline blr detected in %s. Please append FORCE_RET 
to the function.", name);
+                }
+            }
+        }
     }
 #elif defined(HOST_S390)
     {

reply via email to

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