1
0
Fork 0
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:
Jens Arnold 2009-07-12 22:43:24 +00:00
parent afe43d3fcb
commit 36eeecbe9a
3 changed files with 24 additions and 24 deletions

View file

@ -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 }

View file

@ -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}

View file

@ -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)
);