diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-11 04:41:36 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-11 04:41:36 +0000 |
commit | 45c7498f59ad2889f2120a865a51043004eddd5d (patch) | |
tree | 1a62b0e8549a7f2750679de8d7dd3f82039c5719 /apps/codecs/demac/libdemac | |
parent | fe7ca44471b309a0adea563cce947de9efb62ab5 (diff) | |
download | rockbox-45c7498f59ad2889f2120a865a51043004eddd5d.tar.gz rockbox-45c7498f59ad2889f2120a865a51043004eddd5d.zip |
FS#11335 by me: make ARM assembly functions thumb-friendly
We can't pop into pc on ARMv4t when using thumb: the T bit won't be
modified if we are returning to a thumb function
Code running on ARMv4t should use the new ldrpc / ldmpc macros instead
of ldr pc, [sp], #4 and ldm(cond) sp!, {regs, pc}
No modification on pure ARM builds and ARMv5+
Note: USE_THUMB is currently never defined, no targets can currently be
built with -mthumb, see FS#6734
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26756 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/demac/libdemac')
-rw-r--r-- | apps/codecs/demac/libdemac/predictor-arm.S | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/apps/codecs/demac/libdemac/predictor-arm.S b/apps/codecs/demac/libdemac/predictor-arm.S index 1d5587661a..92a78ed9b4 100644 --- a/apps/codecs/demac/libdemac/predictor-arm.S +++ b/apps/codecs/demac/libdemac/predictor-arm.S | |||
@@ -505,7 +505,11 @@ loop: | |||
505 | done: | 505 | done: |
506 | str r14, [r12] @ Save value of p->buf | 506 | str r14, [r12] @ Save value of p->buf |
507 | add sp, sp, #12 @ Don't bother restoring r1-r3 | 507 | add sp, sp, #12 @ Don't bother restoring r1-r3 |
508 | #ifdef ROCKBOX | ||
509 | ldmpc regs=r4-r11 | ||
510 | #else | ||
508 | ldmia sp!, {r4 - r11, pc} | 511 | ldmia sp!, {r4 - r11, pc} |
512 | #endif | ||
509 | 513 | ||
510 | move_hist: | 514 | move_hist: |
511 | @ dest = r11 (p->historybuffer) | 515 | @ dest = r11 (p->historybuffer) |
@@ -664,7 +668,11 @@ loopm: | |||
664 | donem: | 668 | donem: |
665 | str r14, [r12] @ Save value of p->buf | 669 | str r14, [r12] @ Save value of p->buf |
666 | add sp, sp, #8 @ Don't bother restoring r1, r2 | 670 | add sp, sp, #8 @ Don't bother restoring r1, r2 |
671 | #ifdef ROCKBOX | ||
672 | ldmpc regs=r4-r11 | ||
673 | #else | ||
667 | ldmia sp!, {r4 - r11, pc} | 674 | ldmia sp!, {r4 - r11, pc} |
675 | #endif | ||
668 | 676 | ||
669 | move_histm: | 677 | move_histm: |
670 | @ dest = r11 (p->historybuffer) | 678 | @ dest = r11 (p->historybuffer) |