qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v2 1/3] target/ppc: Fixed call to deferred exception


From: Cédric Le Goater
Subject: Re: [PATCH v2 1/3] target/ppc: Fixed call to deferred exception
Date: Fri, 19 Nov 2021 10:24:48 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0

On 11/19/21 10:18, Richard Henderson wrote:
On 11/18/21 2:25 PM, Lucas Mateus Castro (alqotel) wrote:
+    if ((fpscr & FP_VXSOFT) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXSOFT;
+    } else if ((fpscr & FP_OX) && (fpscr & FP_OE)) {
+        error = POWERPC_EXCP_FP_OX;
+    } else if ((fpscr & FP_UX) && (fpscr & FP_UE)) {
+        error = POWERPC_EXCP_FP_UX;
+    } else if ((fpscr & FP_XX) && (fpscr & FP_XE)) {
+        error = POWERPC_EXCP_FP_XX;
+    } else if ((fpscr & FP_ZX) && (fpscr & FP_ZE)) {
+        error = POWERPC_EXCP_FP_ZX;
+    } else if ((fpscr & FP_VXSNAN) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXSNAN;
+    } else if ((fpscr & FP_VXISI) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXISI;
+    } else if ((fpscr & FP_VXIDI) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXIDI;
+    } else if ((fpscr & FP_VXZDZ) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXZDZ;
+    } else if ((fpscr & FP_VXIMZ) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXIMZ;
+    } else if ((fpscr & FP_VXVC) && (fpscr_ve != 0)) {
+        error = POWERPC_EXCP_FP_VXVC;
+    }

Is there a defined order for these in the manual?  I couldn't find it quickly 
if so.  If there is no defined order, I think you should test VE only once.

Drop the use of fpscr_ve and use fpscr & FP_VE instead. (I think these hidden 
uses of *env are evil and should be banished, but that's a bit of a job.)

you mean all the msr_* macros ? I agree. It's huge and I wonder how we could 
automate parts of it.

Thanks,

C.

You could say

     } else {
         return;
     }

+
+    if (error) {

and then remove this test.

The rest of it looks good.


r~




reply via email to

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