[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH target-arm] Don' use T[x] in helper
From: |
Laurent Desnogues |
Subject: |
Re: [Qemu-devel] [PATCH target-arm] Don' use T[x] in helper |
Date: |
Tue, 24 Mar 2009 21:37:33 +0100 |
2009/3/24 Torbjörn Andersson <address@hidden>:
>
> I hit a strange issue with add_cc, can't really explain how it appeared but
> it did. The patch below solved my problem.
>
> Can someone make a qualified guess why? I'm compling with gcc 4.
>
> However, T0 and T1 in a helper should not be used, because it creates a
> unnecessary dependency between translate.c and op_helper.c. Am I correct?
>
> Further, if we cannot trust T0 and T1 in a helper, what about the global
> env-variable?
Your patch is correct and the previous code works by accident
since add_cc is called this way:
gen_helper_add_cc(cpu_T[0], cpu_T[0], cpu_T[1])
What I find strange is that you had issue with the code in svn. I
didn't have before I fixed it, but it was perhaps using some old
compiler at that time.
Laurent
Acked-by: Laurent Desnogues <address@hidden>
> /Best regards Torbjörn Andersson
>
> Index: op_helper.c
> ===================================================================
> --- op_helper.c (revision 6883)
> +++ op_helper.c (working copy)
> @@ -307,7 +307,7 @@
> uint32_t HELPER (add_cc)(uint32_t a, uint32_t b)
> {
> uint32_t result;
> - result = T0 + T1;
> + result = a + b;
> env->NF = env->ZF = result;
> env->CF = result < a;
> env->VF = (a ^ b ^ -1) & (a ^ result);