From cf4813f4ab37dfbc16c7e87bf27592d63d5a6f34 Mon Sep 17 00:00:00 2001 From: niravthakkar Date: Fri, 9 Dec 2016 19:24:55 +0530 Subject: [PATCH] Added SS-b support in C --- dynasm/dasm_s390x.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dynasm/dasm_s390x.h b/dynasm/dasm_s390x.h index 69e4fc14..e99dc39e 100644 --- a/dynasm/dasm_s390x.h +++ b/dynasm/dasm_s390x.h @@ -24,7 +24,7 @@ enum { DASM_REL_PC, DASM_LABEL_PC, DASM_DISP12, DASM_DISP20, DASM_IMM16, DASM_IMM32, - DASM_LEN8R, + DASM_LEN8R,DASM_LEN4HR,DASM_LEN4LR, DASM__MAX }; @@ -289,6 +289,14 @@ void dasm_put(Dst_DECL, int start, ...) CK(n >= 1 && n <= 256, RANGE_I); b[pos++] = n; break; + case DASM_LEN4HR: + CK(n >= 1 && n <= 128, RANGE_I); + b[pos++] = n; + break; + case DASM_LEN4LR: + CK(n >= 1 && n <= 128, RANGE_I); + b[pos++] = n; + break; } } stop: @@ -370,6 +378,8 @@ int dasm_link(Dst_DECL, size_t * szp) case DASM_DISP20: case DASM_DISP12: case DASM_LEN8R: + case DASM_LEN4HR: + case DASM_LEN4LR: pos++; break; } @@ -467,6 +477,12 @@ int dasm_encode(Dst_DECL, void *buffer) case DASM_LEN8R: cp[-1] |= (n - 1) & 0xff; break; + case DASM_LEN4HR: + cp[-1] |= (n - 1) & 0xf0; + break; + case DASM_LEN4LR: + cp[-1] |= (n - 1) & 0xof; + break; default: *cp++ = ins; break;