Files
TheRock/debug-tools/rocgdb/source/ld/testsuite/ld-arm/stm32l4xx-fix-ldm.s
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

148 lines
4.7 KiB
ArmAsm

.syntax unified
.cpu cortex-m4
.fpu fpv4-sp-d16
.text
.align 1
.thumb
.thumb_func
.global _start
_start:
@ LDM CASE #1 (used when rx is in upper_list)
@ ldm rx, {...} ->
@ ldm rx!, {lower_list}
@ ldm rx, {upper_list}
@ b.w
ldm.w r9, {r1-r9}
@ LDM CASE #1 bis (used when rx is in upper_list and pc is
@ in reglist)
@ ldm rx, {...} ->
@ ldm rx!, {lower_list}
@ ldm rx, {upper_list}
ldm.w r9, {r1-r9, pc}
@ LDM CASE #2 (used when rx is not in upper_list)
@ ldm rx, {...} ->
@ mov ry, rx where ry is the lowest register from upper_list
@ ldm ry!, {lower_list}
@ ldm ry, {upper_list}
@ b.w
ldm.w r0, {r1-r9}
@ LDM CASE #2 bis (used when rx is in lower_list)
@ ldm rx, {...} ->
@ mov ry, rx where ry is the lowest register from upper_list
@ ldm ry!, {lower_list}
@ ldm ry, {upper_list}
@ b.w
ldm.w r1, {r1-r9}
@ LDM CASE #2 ter (used when rx is not in upper_list and pc is
@ in reglist)
@ ldm rx, {...} ->
@ mov ry, rx where ry is the lowest register from upper_list
@ ldm ry!, {lower_list}
@ ldm ry, {upper_list}
ldm.w r0, {r1-r9, pc}
@ LDM CASE #2 quater (used when rx is in lower_list and pc is
@ in reglist)
@ ldm rx, {...} ->
@ mov ry, rx where ry is the lowest register from upper_list
@ ldm ry!, {lower_list}
@ ldm ry, {upper_list}
ldm.w r1, {r1-r9, pc}
@ LDM CASE #3 (used when rx is not in upper_list)
@ ldm rx, {...} ->
@ ldm rx!, {lower_list}
@ ldm rx!, {upper_list}
@ b.w
@ Write-back variant are unpredictable when rx appears also in
@ the loaded registers
ldm.w r0!, {r1-r9}
@ LDM CASE #3 bis (used when rx is not in upper_list and pc is
@ in reglist)
@ ldm rx, {...} ->
@ ldm rx!, {lower_list}
@ ldm rx!, {upper_list}
ldm.w r0!, {r1-r9, pc}
@ LDM CASE #4 (used when pc is not in reglist and rx is in
@ lower_list)
@ ldmb rx, {...} ->
@ ldmb rx!, {upper_list}
@ ldmb rx, {lower_list}
ldmdb.w r1, {r1-r9}
@ LDM CASE #5 (used when pc is not in reglist and rx is not in
@ lower_list)
@ It looks like it this mean that it could be in upper_list or not
@ ldmdb rx, {...} ->
@ mov ry, rx where ry is the lowest register from lower_list
@ ldmdb ry!, {upper_list}
@ ldmdb ry , {lower_list}
@ b.w
ldmdb.w sl, {r1-r9}
@ LDM CASE #5 bis (used when pc is not in reglist and rx is in
@ upper_list)
@ ldmdb rx, {...} ->
@ mov ry, rx where ry is the lowest register from lower_list
@ ldmdb ry!, {upper_list}
@ ldmdb ry , {lower_list}
@ b.w
ldmdb.w r9, {r1-r9}
@ LDM CASE #6 (used when pc is in reglist and rx is in
@ upper_list)
@ ldmdb rx, {...} ->
@ sub rx, rx, #size (lower_list + upper_list)
@ ldm rx!, {lower_list}
@ ldm rx, {upper_list}
@ This case reverses the load order
ldmdb.w r9, {r1-r9, pc}
@ LDM CASE #6 bis (used when pc is in reglist and rx is in
@ lower_list)
@ ldmdb rx, {...} ->
@ sub rx, rx, #size (lower_list + upper_list)
@ ldm rx!, {lower_list}
@ ldm rx, {upper_list}
ldmdb.w r1, {r1-r9, pc}
@ LDM CASE #7 (used when pc is in reglist and rx is not in
@ upper_list)
@ ldmdb rx, {...} ->
@ sub ry, rx, #size (lower_list + upper_list) where ry is the lowest
@ register of the upper list
@ ldm ry!, {lower_list}
@ ldm ry , {upper_list}
@ This case reverses the load order
ldmdb.w r0, {r1-r9, pc}
@ LDM CASE #8 (used when pc is in not in reglist)
@ ldmdb rx!, {...} ->
@ ldm rx!, {upper_list}
@ ldm rx!, {lower_list}
@ b.w
ldmdb.w r0!, {r1-r9}
@ LDM CASE #9 (Used when pc is in reglist)
@ ldmdb rx!, {...} ->
@ sub rx, rx, #size (lower_list + upper_list)
@ mov ry, rx where ry is the lowest register from upper_list
@ ldm ry!, {lower_list}
@ ldm ry , {upper_list}
ldmdb.w r0!, {r1-r9, pc}
@ POP CASE #1 (list does not include pc)
@ pop {...} -> pop {lower_list} pop {upper_list}
@ b.w
pop {r0-r9}
@ POP CASE #2 (list includes PC)
@ pop {...} -> pop {lower_list} pop {upper_list}
pop {r0-r9, pc}