diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-06-21 15:01:45 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-06-21 15:04:32 +0200 |
commit | 7e814190e32ae9dc0b230a23f3b35f70030fc4d6 (patch) | |
tree | 4b1489ebe6f964b5fb2af52b50d90a2ddb15f7ed | |
parent | 5f22d1090bef72639f2744402c0466d8dbf8f8ac (diff) | |
parent | 24ef197b1269f8371b1f4a412caa6d2b99d66839 (diff) | |
download | guile-7e814190e32ae9dc0b230a23f3b35f70030fc4d6.tar.gz |
Merge upstream 'lightening'
* libguile/lightening: Merge from https://gitlab.com/wingo/lightening,
commit 24ef197b1269f8371b1f4a412caa6d2b99d66839.
-rw-r--r-- | libguile/lightening/lightening/arm-cpu.c | 2 | ||||
-rw-r--r-- | libguile/lightening/tests/Makefile | 8 | ||||
-rw-r--r-- | libguile/lightening/tests/movi.c | 22 |
3 files changed, 27 insertions, 5 deletions
diff --git a/libguile/lightening/lightening/arm-cpu.c b/libguile/lightening/lightening/arm-cpu.c index 4445266af..2b4eecc29 100644 --- a/libguile/lightening/lightening/arm-cpu.c +++ b/libguile/lightening/lightening/arm-cpu.c @@ -230,7 +230,7 @@ encode_thumb_immediate(unsigned int v) return ((v & 0xff) | (1 << 12)); /* abcdefgh 00000000 abcdefgh 00000000 */ if (((v & 0xffff0000) >> 16) == (v & 0xffff) && (v & 0xff) == 0) - return ((v & 0x000000ff) | (2 << 12)); + return (((v & 0x0000ff00) >> 8) | (2 << 12)); /* abcdefgh abcdefgh abcdefgh abcdefgh */ if ( (v & 0xff) == ((v & 0xff00) >> 8) && ((v & 0xff00) >> 8) == ((v & 0xff0000) >> 16) && diff --git a/libguile/lightening/tests/Makefile b/libguile/lightening/tests/Makefile index 81279720d..769b43423 100644 --- a/libguile/lightening/tests/Makefile +++ b/libguile/lightening/tests/Makefile @@ -1,5 +1,5 @@ TESTS=$(sort $(basename $(wildcard *.c))) -TARGETS=native ia32 aarch64 armv7 +TARGETS ?= native ia32 aarch64 armv7 # Suitable values of cross-compiler variables for Debian: # @@ -17,9 +17,9 @@ TARGETS=native ia32 aarch64 armv7 # gcc-aarch64-linux-gnu libc6-dev-arm64-cross libc6:arm64 # CC = gcc -CC_IA32=guix environment --pure -s i686-linux --ad-hoc gcc-toolchain glibc -- gcc -CC_AARCH64=guix environment --pure -s aarch64-linux --ad-hoc gcc-toolchain glibc -- gcc -CC_ARMv7=guix environment --pure -s armhf-linux --ad-hoc gcc-toolchain glibc -- gcc +CC_IA32=guix environment --pure -s i686-linux --ad-hoc gcc-toolchain -- gcc +CC_AARCH64=guix environment --pure -s aarch64-linux --ad-hoc gcc-toolchain -- gcc +CC_ARMv7=guix environment --pure -s armhf-linux --ad-hoc gcc-toolchain -- gcc CFLAGS = -Wall -O0 -g all: $(foreach TARGET,$(TARGETS),$(addprefix test-$(TARGET)-,$(TESTS))) diff --git a/libguile/lightening/tests/movi.c b/libguile/lightening/tests/movi.c new file mode 100644 index 000000000..fcdd656c0 --- /dev/null +++ b/libguile/lightening/tests/movi.c @@ -0,0 +1,22 @@ +#include "test.h" + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); + + jit_movi(j, JIT_R0, 0xa500a500); + jit_leave_jit_abi(j, 0, 0, align); + jit_retr(j, JIT_R0); + + jit_uword_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == 0xa500a500); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} |