powerpc: Drop _nmask_and_or_msr()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Fri, 14 Aug 2020 06:54:49 +0000 (06:54 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 2 Sep 2020 01:00:20 +0000 (11:00 +1000)
_nmask_and_or_msr() is only used at two places to set MSR_IP.

The SYNC is unnecessary as the users are not PowerPC 601.

Can be easily writen in C.

Do it, and drop _nmask_and_or_msr()

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/c2d2b8dfb8dd677026b26dffc8d31070c38a6b89.1597388079.git.christophe.leroy@csgroup.eu
arch/powerpc/include/asm/processor.h
arch/powerpc/kernel/misc_32.S
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
arch/powerpc/platforms/embedded6xx/storcenter.c

index 8184eb3..8c7ad14 100644 (file)
@@ -437,7 +437,6 @@ extern void power9_idle_type(unsigned long stop_psscr_val,
 
 extern void flush_instruction_cache(void);
 extern int fix_alignment(struct pt_regs *);
-extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
 
 #ifdef CONFIG_PPC64
 /*
index b24f866..8d9cb5d 100644 (file)
@@ -215,19 +215,6 @@ _GLOBAL(low_choose_7447a_dfs)
 
 #endif /* CONFIG_CPU_FREQ_PMAC && CONFIG_PPC_BOOK3S_32 */
 
-/*
- * complement mask on the msr then "or" some values on.
- *     _nmask_and_or_msr(nmask, value_to_or)
- */
-_GLOBAL(_nmask_and_or_msr)
-       mfmsr   r0              /* Get current msr */
-       andc    r0,r0,r3        /* And off the bits set in r3 (first parm) */
-       or      r0,r0,r4        /* Or on the bits in r4 (second parm) */
-       SYNC                    /* Some chip revs have problems here... */
-       mtmsr   r0              /* Update machine state */
-       isync
-       blr                     /* Done */
-
 #ifdef CONFIG_40x
 
 /*
index 15437ab..b95c338 100644 (file)
@@ -147,7 +147,8 @@ static void __noreturn mpc7448_hpc2_restart(char *cmd)
        local_irq_disable();
 
        /* Set exception prefix high - to the firmware */
-       _nmask_and_or_msr(0, MSR_IP);
+       mtmsr(mfmsr() | MSR_IP);
+       isync();
 
        for (;;) ;              /* Spin until reset happens */
 }
index ed1914d..e346ddc 100644 (file)
@@ -101,7 +101,8 @@ static void __noreturn storcenter_restart(char *cmd)
        local_irq_disable();
 
        /* Set exception prefix high - to the firmware */
-       _nmask_and_or_msr(0, MSR_IP);
+       mtmsr(mfmsr() | MSR_IP);
+       isync();
 
        /* Wait for reset to happen */
        for (;;) ;