diff options
Diffstat (limited to 'arch/arm/kernel/iwmmxt.S')
| -rw-r--r-- | arch/arm/kernel/iwmmxt.S | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/arm/kernel/iwmmxt.S b/arch/arm/kernel/iwmmxt.S index a5599cfc43cb..2b32978ae905 100644 --- a/arch/arm/kernel/iwmmxt.S +++ b/arch/arm/kernel/iwmmxt.S | |||
| @@ -94,13 +94,19 @@ ENTRY(iwmmxt_task_enable) | |||
| 94 | 94 | ||
| 95 | mrc p15, 0, r2, c2, c0, 0 | 95 | mrc p15, 0, r2, c2, c0, 0 |
| 96 | mov r2, r2 @ cpwait | 96 | mov r2, r2 @ cpwait |
| 97 | bl concan_save | ||
| 97 | 98 | ||
| 98 | teq r1, #0 @ test for last ownership | 99 | #ifdef CONFIG_PREEMPT_COUNT |
| 99 | mov lr, r9 @ normal exit from exception | 100 | get_thread_info r10 |
| 100 | beq concan_load @ no owner, skip save | 101 | #endif |
| 102 | 4: dec_preempt_count r10, r3 | ||
| 103 | mov pc, r9 @ normal exit from exception | ||
| 101 | 104 | ||
| 102 | concan_save: | 105 | concan_save: |
| 103 | 106 | ||
| 107 | teq r1, #0 @ test for last ownership | ||
| 108 | beq concan_load @ no owner, skip save | ||
| 109 | |||
| 104 | tmrc r2, wCon | 110 | tmrc r2, wCon |
| 105 | 111 | ||
| 106 | @ CUP? wCx | 112 | @ CUP? wCx |
| @@ -138,7 +144,7 @@ concan_dump: | |||
| 138 | wstrd wR15, [r1, #MMX_WR15] | 144 | wstrd wR15, [r1, #MMX_WR15] |
| 139 | 145 | ||
| 140 | 2: teq r0, #0 @ anything to load? | 146 | 2: teq r0, #0 @ anything to load? |
| 141 | beq 3f | 147 | moveq pc, lr @ if not, return |
| 142 | 148 | ||
| 143 | concan_load: | 149 | concan_load: |
| 144 | 150 | ||
| @@ -171,14 +177,9 @@ concan_load: | |||
| 171 | @ clear CUP/MUP (only if r1 != 0) | 177 | @ clear CUP/MUP (only if r1 != 0) |
| 172 | teq r1, #0 | 178 | teq r1, #0 |
| 173 | mov r2, #0 | 179 | mov r2, #0 |
| 174 | beq 3f | 180 | moveq pc, lr |
| 175 | tmcr wCon, r2 | ||
| 176 | 181 | ||
| 177 | 3: | 182 | tmcr wCon, r2 |
| 178 | #ifdef CONFIG_PREEMPT_COUNT | ||
| 179 | get_thread_info r10 | ||
| 180 | #endif | ||
| 181 | 4: dec_preempt_count r10, r3 | ||
| 182 | mov pc, lr | 183 | mov pc, lr |
| 183 | 184 | ||
| 184 | /* | 185 | /* |
