mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
cortex-m0: add more thumb1 helpers
Add other helpers for compact switch on ARMv6-M. Signed-off-by: Vincent Palatin <vpalatin@chromium.org> BRANCH=none BUG=none TEST=none Change-Id: I711ee8361ff1545acd978974d9f9fc306ca43b78 Reviewed-on: https://chromium-review.googlesource.com/190711 Tested-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Vincent Palatin <vpalatin@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
13634cbb50
commit
2dc7016541
@@ -13,10 +13,10 @@
|
||||
.code 16
|
||||
|
||||
/*
|
||||
* Helper for compact switch
|
||||
* Helpers for compact switch
|
||||
*
|
||||
* r0: the table index
|
||||
* lr: the table base address
|
||||
* lr: the table base address (need to clear bit 0)
|
||||
*
|
||||
* r0 and lr must be PRESERVED.
|
||||
* r12 can be clobbered.
|
||||
@@ -24,12 +24,54 @@
|
||||
.global __gnu_thumb1_case_uqi
|
||||
.thumb_func
|
||||
__gnu_thumb1_case_uqi:
|
||||
push {r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
ldrb r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r1}
|
||||
bx lr
|
||||
mov r12, r1
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
ldrb r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
mov r1, r12
|
||||
bx lr
|
||||
|
||||
.global __gnu_thumb1_case_sqi
|
||||
.thumb_func
|
||||
__gnu_thumb1_case_sqi:
|
||||
mov r12, r1
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
ldrsb r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
mov r1, r12
|
||||
bx lr
|
||||
|
||||
.global __gnu_thumb1_case_uhi
|
||||
.thumb_func
|
||||
__gnu_thumb1_case_uhi:
|
||||
push {r0, r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r0, r0, #1
|
||||
lsls r1, r1, #1
|
||||
ldrh r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r0, r1}
|
||||
bx lr
|
||||
|
||||
|
||||
.global __gnu_thumb1_case_shi
|
||||
.thumb_func
|
||||
__gnu_thumb1_case_shi:
|
||||
push {r0, r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r0, r0, #1
|
||||
lsls r1, r1, #1
|
||||
ldrsh r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r0, r1}
|
||||
bx lr
|
||||
|
||||
Reference in New Issue
Block a user