From 8a6092f2b48eea26981b845d1dfbd4aa40f1c6a7 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Fri, 22 Feb 2019 17:29:13 +0100 Subject: [PATCH] ARM: Fix left shifts. * lib/arm-mes/arm.M1: Add macros "lsl____%r0,%r0,%r9", "lsl____%r1,%r1,%r9", "mov____$i8,%r9". * module/mescc/armv4/as.scm (armv4:shl-r): Use them. --- lib/arm-mes/arm.M1 | 3 +++ module/mescc/armv4/as.scm | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/arm-mes/arm.M1 b/lib/arm-mes/arm.M1 index 37872744..50a32d62 100644 --- a/lib/arm-mes/arm.M1 +++ b/lib/arm-mes/arm.M1 @@ -79,6 +79,7 @@ DEFINE jne 1a DEFINE mov____$i8,%r0 00a0e3 DEFINE mov____$i8,%r1 10a0e3 # mov r1, #66 DEFINE mov____$i8,%r7 70a0e3 +DEFINE mov____$i8,%r9 90a0e3 DEFINE mov____%r0,%r1 0010a0e1 DEFINE mov____%r0,%r2 0020a0e1 DEFINE mov____%r0,(%r1) 000081e5 @@ -204,6 +205,8 @@ DEFINE moveq__%r0,$i8 00a003 # moveq r0, #xx #DEFINE teq____%r1,$i8 420031e3 # teq r1, #xx DEFINE asr____%r0,%r0,%r1 5001a0e1 # asr %r0, %r0, %r1 DEFINE lsl____%r0,%r0,%r1 1001a0e1 # lsl %r0, %r0, %r1 +DEFINE lsl____%r0,%r0,%r9 1009a0e1 # lsl %r0, %r0, %r9 +DEFINE lsl____%r1,%r1,%r9 1119a0e1 # lsl %r1, %r1, %r9 DEFINE lsr____%r0,%r0,%r1 3001a0e1 # lsr %r0, %r0, %r1 DEFINE ldr____%r0,(%sp,#$i8) 009de5 # ldr r0, [r13+xx] DEFINE ldr____%r1,(%sp,#$i8) 109de5 # ldr r1, [r13+xx] diff --git a/module/mescc/armv4/as.scm b/module/mescc/armv4/as.scm index f43a1e8f..876a0f95 100644 --- a/module/mescc/armv4/as.scm +++ b/module/mescc/armv4/as.scm @@ -401,7 +401,8 @@ (define (armv4:shl-r info n) (let ((r (get-r info))) - `(((#:immediate1 ,n) ,(string-append "shl____$i8,%" r))))) + `(((#:immediate1 ,n) "mov____$i8,%r9") + ((#:immediate1 ,n) ,(string-append "lsl____%" r ",%" r ",%r9"))))) (define (armv4:r+r info) (let ((r (get-r info)))