aboutsummaryrefslogtreecommitdiff
path: root/lib/arm/assemble.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arm/assemble.h')
-rw-r--r--lib/arm/assemble.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/arm/assemble.h b/lib/arm/assemble.h
index e6a72d0..bf1ad03 100644
--- a/lib/arm/assemble.h
+++ b/lib/arm/assemble.h
@@ -15,6 +15,13 @@ static inline void PUSHone(struct assemble_ctx ctx, int Rt) {
op32(ctx.codep, 0x052d0004 | Rt << 12 | ctx.cond << 28);
}
+static inline void PUSHmulti(struct assemble_ctx ctx, uint16_t mask) {
+ if (ctx.thumb)
+ op32(ctx.codep, 0x0000e8ad | mask << 16);
+ else
+ op32(ctx.codep, 0x092d0000 | mask | ctx.cond << 28);
+}
+
static inline void POPone(struct assemble_ctx ctx, int Rt) {
if (ctx.thumb)
op32(ctx.codep, 0x0b04f85d | Rt << 28);