]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
parisc: fix preempt_count() check in entry.S
authorSven Schnelle <svens@stackframe.org>
Sat, 9 Oct 2021 18:24:37 +0000 (20:24 +0200)
committerHelge Deller <deller@gmx.de>
Sat, 30 Oct 2021 21:11:01 +0000 (23:11 +0200)
preempt_count in struct thread_info is unsigned int,
but the entry.S code used LDREG, which generates a 64 bit
load when compiled for 64 bit. Fix this to use an ldw and
also change the condition in the compare one line below
to only compares 32 bits, although ldw zero extends, and
that should work with a 64 bit compare.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/entry.S

index 9f939afe6b88c49bf41573744312448245a0ac20..e9e598c18cb060dd70d5e5c48efbd2c913107a1a 100644 (file)
@@ -974,8 +974,8 @@ intr_do_preempt:
 
        /* current_thread_info()->preempt_count */
        mfctl   %cr30, %r1
-       LDREG   TI_PRE_COUNT(%r1), %r19
-       cmpib,COND(<>)  0, %r19, intr_restore   /* if preempt_count > 0 */
+       ldw     TI_PRE_COUNT(%r1), %r19
+       cmpib,<>        0, %r19, intr_restore   /* if preempt_count > 0 */
        nop                             /* prev insn branched backwards */
 
        /* check if we interrupted a critical path */