git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
arm
/
kernel
/
iwmmxt.S
diff --git
a/arch/arm/kernel/iwmmxt.S
b/arch/arm/kernel/iwmmxt.S
index
24c7b04
..
b63b528
100644
(file)
--- a/
arch/arm/kernel/iwmmxt.S
+++ b/
arch/arm/kernel/iwmmxt.S
@@
-271,30
+271,27
@@
ENTRY(iwmmxt_task_restore)
/*
* Concan handling on task switch
*
/*
* Concan handling on task switch
*
- * r0 = previous task_struct pointer (must be preserved)
- * r1 = previous thread_info pointer
- * r2 = next thread_info.cpu_domain pointer (must be preserved)
+ * r0 = next thread_info pointer
*
*
- * Called only from __switch_to with task preemption disabled.
- * No need to care about preserving r4 and above.
+ * Called only from the iwmmxt notifier with task preemption disabled.
*/
ENTRY(iwmmxt_task_switch)
*/
ENTRY(iwmmxt_task_switch)
- mrc p15, 0, r
4
, c15, c1, 0
- tst r
4
, #0x3 @ CP0 and CP1 accessible?
+ mrc p15, 0, r
1
, c15, c1, 0
+ tst r
1
, #0x3 @ CP0 and CP1 accessible?
bne 1f @ yes: block them for next task
bne 1f @ yes: block them for next task
- ldr r
5
, =concan_owner
- add r
6, r2, #(TI_IWMMXT_STATE - TI_CPU_DOMAIN)
@ get next task Concan save area
- ldr r
5, [r5
] @ get current Concan owner
- teq r
5, r6
@ next task owns it?
+ ldr r
2
, =concan_owner
+ add r
3, r0, #TI_IWMMXT_STATE
@ get next task Concan save area
+ ldr r
2, [r2
] @ get current Concan owner
+ teq r
2, r3
@ next task owns it?
movne pc, lr @ no: leave Concan disabled
movne pc, lr @ no: leave Concan disabled
-1: eor r
4, r4
, #3 @ flip Concan access
- mcr p15, 0, r
4
, c15, c1, 0
+1: eor r
1, r1
, #3 @ flip Concan access
+ mcr p15, 0, r
1
, c15, c1, 0
- mrc p15, 0, r
4
, c2, c0, 0
- sub pc, lr, r
4
, lsr #32 @ cpwait and return
+ mrc p15, 0, r
1
, c2, c0, 0
+ sub pc, lr, r
1
, lsr #32 @ cpwait and return
/*
* Remove Concan ownership of given task
/*
* Remove Concan ownership of given task