From: Paolo Molaro Date: Wed, 24 Jan 2007 20:01:27 +0000 (-0000) Subject: Wed Jan 24 21:00:40 CET 2007 Paolo Molaro X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=5c8ab212f157b21ff274c9bd37d3bf98bcf480a8;p=mono.git Wed Jan 24 21:00:40 CET 2007 Paolo Molaro * arm/arm-codegen.h: fixed encoding of short/byte load/store instructions with negative immediate offsets. svn path=/trunk/mono/; revision=71622 --- diff --git a/mono/arch/ChangeLog b/mono/arch/ChangeLog index 6aa593a133d..b6ae4d7c4af 100644 --- a/mono/arch/ChangeLog +++ b/mono/arch/ChangeLog @@ -1,4 +1,9 @@ +Wed Jan 24 21:00:40 CET 2007 Paolo Molaro + + * arm/arm-codegen.h: fixed encoding of short/byte load/store + instructions with negative immediate offsets. + Mon Nov 20 17:36:45 CET 2006 Paolo Molaro * arm/arm-codegen.h: added suppot for thumb interworking instructions. diff --git a/mono/arch/arm/arm-codegen.h b/mono/arch/arm/arm-codegen.h index 41c4a93b6b4..d8c293a5fc8 100644 --- a/mono/arch/arm/arm-codegen.h +++ b/mono/arch/arm/arm-codegen.h @@ -737,10 +737,10 @@ typedef struct { #define ARM_HXFER_TAG ((ARM_HXFER_ID << 25) | (ARM_HXFER_ID2 << 7) | (ARM_HXFER_ID3 << 4)) #define ARM_DEF_HXFER_IMM_COND(imm, h, s, rd, rn, ls, wb, p, cond) \ - ((imm) & 0xF) | \ + ((imm) < 0?(-(imm)) & 0xF:(imm) & 0xF) | \ ((h) << 5) | \ ((s) << 6) | \ - (((imm) << 4) & (0xF << 8)) | \ + ((imm) < 0?((-(imm)) << 4) & 0xF00:((imm) << 4) & 0xF00) | \ ((rd) << 12) | \ ((rn) << 16) | \ ((ls) << 20) | \