mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-06-02 09:16:49 +02:00
Initial commit
This commit is contained in:
39
common/ndsabi/macros.inc
Normal file
39
common/ndsabi/macros.inc
Normal file
@@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: Zlib
|
||||
// SPDX-FileNotice: Modified from the original version by the BlocksDS project.
|
||||
//
|
||||
// Copyright (C) 2021-2023 agbabi contributors
|
||||
//
|
||||
// ARM assembly support macros
|
||||
|
||||
@ Shift and test upper two bits, clobbering \reg
|
||||
@ Use mi for first bit, cs for second bit
|
||||
.macro joaobapt_test_lsl reg shift = #0
|
||||
movs \reg, \reg, lsl \shift
|
||||
.endm
|
||||
|
||||
@ Test lowest two bits, clobbering \reg
|
||||
@ Use mi for low bit, cs for high bit
|
||||
.macro joaobapt_test reg
|
||||
joaobapt_test_lsl \reg, #31
|
||||
.endm
|
||||
|
||||
@ Test lowest two bits of \src, result stored in \dst
|
||||
@ Use mi for low bit, cs for high bit
|
||||
.macro joaobapt_test_into dst, src
|
||||
movs \dst, \src, lsl #31
|
||||
.endm
|
||||
|
||||
@ Branches depending on lowest two bits, clobbering \reg
|
||||
@ b_mi = low bit case, b_cs = high bit case
|
||||
.macro joaobapt_switch reg, b_mi, b_cs
|
||||
joaobapt_test \reg
|
||||
bmi \b_mi
|
||||
bcs \b_cs
|
||||
.endm
|
||||
|
||||
@ Branches depending on alignment of \a and \b, clobbering \scratch
|
||||
@ b_byte = off-by-byte case, b_half = off-by-half case
|
||||
.macro align_switch a, b, scratch, b_byte, b_half
|
||||
eor \scratch, \a, \b
|
||||
joaobapt_switch \scratch, \b_byte, \b_half
|
||||
.endm
|
||||
Reference in New Issue
Block a user