forked from len0rd/rockbox
* Fix overlooked r12 usage possibility in mpegplayer ARM idct
* ARM dualcore: Don't save r12 in switch_thread_core() git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21830 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
afe43d3fcb
commit
36eeecbe9a
3 changed files with 24 additions and 24 deletions
|
@ -387,7 +387,7 @@ mpeg2_idct_add:
|
|||
blo 2b
|
||||
ldmfd sp!, { r4-r11, pc }
|
||||
3:
|
||||
stmfd sp!, { r4-r6, lr }
|
||||
stmfd sp!, { r4-r5, lr }
|
||||
ldrsh r1, [r0, #0] /* r1 = block[0] */
|
||||
mov r4, #0
|
||||
strh r4, [r0, #0] /* block[0] = 0 */
|
||||
|
@ -397,7 +397,7 @@ mpeg2_idct_add:
|
|||
4:
|
||||
ldrb r4, [r2, #0]
|
||||
ldrb r5, [r2, #1]
|
||||
ldrb r6, [r2, #2]
|
||||
ldrb r12, [r2, #2]
|
||||
ldrb lr, [r2, #3]
|
||||
add r4, r4, r1, asr #7
|
||||
cmp r4, #255
|
||||
|
@ -407,17 +407,17 @@ mpeg2_idct_add:
|
|||
cmp r5, #255
|
||||
mvnhi r5, r5, asr #31
|
||||
strb r5, [r2, #1]
|
||||
add r6, r6, r1, asr #7
|
||||
cmp r6, #255
|
||||
mvnhi r6, r6, asr #31
|
||||
strb r6, [r2, #2]
|
||||
add r12, r12, r1, asr #7
|
||||
cmp r12, #255
|
||||
mvnhi r12, r12, asr #31
|
||||
strb r12, [r2, #2]
|
||||
add lr, lr, r1, asr #7
|
||||
cmp lr, #255
|
||||
mvnhi lr, lr, asr #31
|
||||
strb lr, [r2, #3]
|
||||
ldrb r4, [r2, #4]
|
||||
ldrb r5, [r2, #5]
|
||||
ldrb r6, [r2, #6]
|
||||
ldrb r12, [r2, #6]
|
||||
ldrb lr, [r2, #7]
|
||||
add r4, r4, r1, asr #7
|
||||
cmp r4, #255
|
||||
|
@ -427,10 +427,10 @@ mpeg2_idct_add:
|
|||
cmp r5, #255
|
||||
mvnhi r5, r5, asr #31
|
||||
strb r5, [r2, #5]
|
||||
add r6, r6, r1, asr #7
|
||||
cmp r6, #255
|
||||
mvnhi r6, r6, asr #31
|
||||
strb r6, [r2, #6]
|
||||
add r12, r12, r1, asr #7
|
||||
cmp r12, #255
|
||||
mvnhi r12, r12, asr #31
|
||||
strb r12, [r2, #6]
|
||||
add lr, lr, r1, asr #7
|
||||
cmp lr, #255
|
||||
mvnhi lr, lr, asr #31
|
||||
|
@ -438,4 +438,4 @@ mpeg2_idct_add:
|
|||
add r2, r2, r3
|
||||
cmp r2, r0
|
||||
blo 4b
|
||||
ldmfd sp!, { r4-r6, pc }
|
||||
ldmfd sp!, { r4-r5, pc }
|
||||
|
|
|
@ -290,7 +290,7 @@ mpeg2_idct_add:
|
|||
ldmfd sp!, {r4-r11, pc}
|
||||
|
||||
3:
|
||||
stmfd sp!, {r4-r6, lr}
|
||||
stmfd sp!, {r4-r5, lr}
|
||||
ldrsh r1, [r0, #0] /* r1 = block[0] */
|
||||
mov r4, #0
|
||||
strh r4, [r0, #0] /* block[0] = 0 */
|
||||
|
@ -300,7 +300,7 @@ mpeg2_idct_add:
|
|||
4:
|
||||
ldrb r4, [r2, #0]
|
||||
ldrb r5, [r2, #1]
|
||||
ldrb r6, [r2, #2]
|
||||
ldrb r12, [r2, #2]
|
||||
ldrb lr, [r2, #3]
|
||||
add r4, r4, r1, asr #7
|
||||
usat r4, #8, r4
|
||||
|
@ -308,15 +308,15 @@ mpeg2_idct_add:
|
|||
add r5, r5, r1, asr #7
|
||||
usat r5, #8, r5
|
||||
strb r5, [r2, #1]
|
||||
add r6, r6, r1, asr #7
|
||||
usat r6, #8, r6
|
||||
strb r6, [r2, #2]
|
||||
add r12, r12, r1, asr #7
|
||||
usat r12, #8, r12
|
||||
strb r12, [r2, #2]
|
||||
add lr, lr, r1, asr #7
|
||||
usat lr, #8, lr
|
||||
strb lr, [r2, #3]
|
||||
ldrb r4, [r2, #4]
|
||||
ldrb r5, [r2, #5]
|
||||
ldrb r6, [r2, #6]
|
||||
ldrb r12, [r2, #6]
|
||||
ldrb lr, [r2, #7]
|
||||
add r4, r4, r1, asr #7
|
||||
usat r4, #8, r4
|
||||
|
@ -324,13 +324,13 @@ mpeg2_idct_add:
|
|||
add r5, r5, r1, asr #7
|
||||
usat r5, #8, r5
|
||||
strb r5, [r2, #5]
|
||||
add r6, r6, r1, asr #7
|
||||
usat r6, #8, r6
|
||||
strb r6, [r2, #6]
|
||||
add r12, r12, r1, asr #7
|
||||
usat r12, #8, r12
|
||||
strb r12, [r2, #6]
|
||||
add lr, lr, r1, asr #7
|
||||
usat lr, #8, lr
|
||||
strb lr, [r2, #7]
|
||||
add r2, r2, r3
|
||||
cmp r2, r0
|
||||
blo 4b
|
||||
ldmfd sp!, {r4-r6, pc}
|
||||
ldmfd sp!, {r4-r5, pc}
|
||||
|
|
|
@ -696,7 +696,7 @@ static void __attribute__((naked))
|
|||
* Stack access also isn't permitted until restoring the original stack and
|
||||
* context. */
|
||||
asm volatile (
|
||||
"stmfd sp!, { r4-r12, lr } \n" /* Stack all non-volatile context on current core */
|
||||
"stmfd sp!, { r4-r11, lr } \n" /* Stack all non-volatile context on current core */
|
||||
"ldr r2, =idle_stacks \n" /* r2 = &idle_stacks[core][IDLE_STACK_WORDS] */
|
||||
"ldr r2, [r2, r0, lsl #2] \n"
|
||||
"add r2, r2, %0*4 \n"
|
||||
|
@ -712,7 +712,7 @@ static void __attribute__((naked))
|
|||
"ldr r0, =cpucache_invalidate \n" /* Invalidate new core's cache */
|
||||
"mov lr, pc \n"
|
||||
"bx r0 \n"
|
||||
"ldmfd sp!, { r4-r12, pc } \n" /* Restore non-volatile context to new core and return */
|
||||
"ldmfd sp!, { r4-r11, pc } \n" /* Restore non-volatile context to new core and return */
|
||||
".ltorg \n" /* Dump constant pool */
|
||||
: : "i"(IDLE_STACK_WORDS)
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue