According to the PAPR, hcalls should not modify the Condition
Register fields, hence save/restore the CR is not necessary.

Signed-off-by: Lijun Pan <l...@linux.ibm.com>
---
 arch/powerpc/platforms/pseries/hvCall.S | 36 -------------------------
 1 file changed, 36 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/hvCall.S 
b/arch/powerpc/platforms/pseries/hvCall.S
index 2136e42833af..b26a79331994 100644
--- a/arch/powerpc/platforms/pseries/hvCall.S
+++ b/arch/powerpc/platforms/pseries/hvCall.S
@@ -105,13 +105,9 @@ END_FTR_SECTION(0, 1);                                     
        \
 _GLOBAL_TOC(plpar_hcall_norets)
        HMT_MEDIUM
 
-       mfcr    r0
-       stw     r0,8(r1)
        HCALL_BRANCH(plpar_hcall_norets_trace)
        HVSC                            /* invoke the hypervisor */
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
        blr                             /* return r3 = status */
 
 #ifdef CONFIG_TRACEPOINTS
@@ -119,17 +115,12 @@ plpar_hcall_norets_trace:
        HCALL_INST_PRECALL(R4)
        HVSC
        HCALL_INST_POSTCALL_NORETS
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
        blr
 #endif
 
 _GLOBAL_TOC(plpar_hcall)
        HMT_MEDIUM
 
-       mfcr    r0
-       stw     r0,8(r1)
-
        HCALL_BRANCH(plpar_hcall_trace)
 
        std     r4,STK_PARAM(R4)(r1)     /* Save ret buffer */
@@ -149,9 +140,6 @@ _GLOBAL_TOC(plpar_hcall)
        std     r6, 16(r12)
        std     r7, 24(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr                             /* return r3 = status */
 
 #ifdef CONFIG_TRACEPOINTS
@@ -178,9 +166,6 @@ plpar_hcall_trace:
 
        HCALL_INST_POSTCALL(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr
 #endif
 
@@ -193,9 +178,6 @@ plpar_hcall_trace:
 _GLOBAL(plpar_hcall_raw)
        HMT_MEDIUM
 
-       mfcr    r0
-       stw     r0,8(r1)
-
        std     r4,STK_PARAM(R4)(r1)     /* Save ret buffer */
 
        mr      r4,r5
@@ -213,17 +195,11 @@ _GLOBAL(plpar_hcall_raw)
        std     r6, 16(r12)
        std     r7, 24(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr                             /* return r3 = status */
 
 _GLOBAL_TOC(plpar_hcall9)
        HMT_MEDIUM
 
-       mfcr    r0
-       stw     r0,8(r1)
-
        HCALL_BRANCH(plpar_hcall9_trace)
 
        std     r4,STK_PARAM(R4)(r1)     /* Save ret buffer */
@@ -252,9 +228,6 @@ _GLOBAL_TOC(plpar_hcall9)
        std     r11,56(r12)
        std     r0, 64(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr                             /* return r3 = status */
 
 #ifdef CONFIG_TRACEPOINTS
@@ -290,9 +263,6 @@ plpar_hcall9_trace:
 
        HCALL_INST_POSTCALL(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr
 #endif
 
@@ -300,9 +270,6 @@ plpar_hcall9_trace:
 _GLOBAL(plpar_hcall9_raw)
        HMT_MEDIUM
 
-       mfcr    r0
-       stw     r0,8(r1)
-
        std     r4,STK_PARAM(R4)(r1)     /* Save ret buffer */
 
        mr      r4,r5
@@ -329,7 +296,4 @@ _GLOBAL(plpar_hcall9_raw)
        std     r11,56(r12)
        std     r0, 64(r12)
 
-       lwz     r0,8(r1)
-       mtcrf   0xff,r0
-
        blr                             /* return r3 = status */
-- 
2.22.0

Reply via email to