qemu-devel
[Top][All Lists]
Advanced

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

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


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

Thiemo Seufer wrote:
> Alexander Graf wrote:
>   
>> 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);
>> +                }
>> +            }
>> +        }
>>     
>
> Is check_ops.sh not enough for debugging micro-ops?
>
>
>   
Basically it should be. PowerPC branching can be (regex) b..rl. Honestly
I did not know about this script though and as it was not in the
makefile, it did not tell me that something wrong was going on. This
check costs near no time and has to be passed in order to build
successfully.

So either check_ops should be fixed (not only brl) and put into the
Makefile.target or a check like this is good to have.

Alex




reply via email to

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