Skip to content

Commit

Permalink
ARM: 8034/1: Disable preemption in iwmmxt_task_enable()
Browse files Browse the repository at this point in the history
This patch is in preparation for calling the iwmmxt_task_enable()
function with interrupts enabled.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Catalin Marinas authored and Russell King committed Apr 25, 2014
1 parent a05e54c commit 431a84b
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions arch/arm/kernel/iwmmxt.S
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <asm/ptrace.h>
#include <asm/thread_info.h>
#include <asm/asm-offsets.h>
#include <asm/assembler.h>

#if defined(CONFIG_CPU_PJ4)
#define PJ4(code...) code
Expand Down Expand Up @@ -65,13 +66,14 @@
*/

ENTRY(iwmmxt_task_enable)
inc_preempt_count r10, r3

XSC(mrc p15, 0, r2, c15, c1, 0)
PJ4(mrc p15, 0, r2, c1, c0, 2)
@ CP0 and CP1 accessible?
XSC(tst r2, #0x3)
PJ4(tst r2, #0xf)
movne pc, lr @ if so no business here
bne 4f @ if so no business here
@ enable access to CP0 and CP1
XSC(orr r2, r2, #0x3)
XSC(mcr p15, 0, r2, c15, c1, 0)
Expand Down Expand Up @@ -132,7 +134,7 @@ concan_dump:
wstrd wR15, [r1, #MMX_WR15]

2: teq r0, #0 @ anything to load?
moveq pc, lr
beq 3f

concan_load:

Expand Down Expand Up @@ -165,8 +167,14 @@ concan_load:
@ clear CUP/MUP (only if r1 != 0)
teq r1, #0
mov r2, #0
moveq pc, lr
beq 3f
tmcr wCon, r2

3:
#ifdef CONFIG_PREEMPT_COUNT
get_thread_info r10
#endif
4: dec_preempt_count r10, r3
mov pc, lr

/*
Expand Down

0 comments on commit 431a84b

Please sign in to comment.