summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-10-17 19:30:34 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-10-17 19:30:34 -0700
commitedb58f7813b20f1ec1ad640b53fcd58b680d8103 (patch)
treefbdf8fcef98e5839ad48b05375e0a730577824af
parent9a1f9f5ab6394279b5f8f0b5466184694a2dc2ba (diff)
downloadnasm-edb58f7813b20f1ec1ad640b53fcd58b680d8103.tar.gz
SAA: add saa_writeaddr() similar to other locations
Provide saa_writeaddr() to write an integer in x86 format. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--saa.c21
-rw-r--r--saa.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/saa.c b/saa.c
index 5fab4bbd..b5068331 100644
--- a/saa.c
+++ b/saa.c
@@ -287,6 +287,11 @@ void saa_write64(struct SAA *s, uint64_t v)
saa_wbytes(s, &v, 8);
}
+void saa_writeaddr(struct SAA *s, uint64_t v, size_t len)
+{
+ saa_wbytes(s, &v, len);
+}
+
#else /* not WORDS_LITTLEENDIAN */
void saa_write16(struct SAA *s, uint16_t v)
@@ -324,6 +329,22 @@ void saa_write64(struct SAA *s, uint64_t v)
saa_wbytes(s, b, 8);
}
+void saa_writeaddr(struct SAA *s, uint64_t v, size_t len)
+{
+ uint8_t b[8];
+
+ b[0] = v;
+ b[1] = v >> 8;
+ b[2] = v >> 16;
+ b[3] = v >> 24;
+ b[4] = v >> 32;
+ b[5] = v >> 40;
+ b[6] = v >> 48;
+ b[7] = v >> 56;
+
+ saa_wbytes(s, &v, len);
+}
+
#endif /* WORDS_LITTLEENDIAN */
/* write unsigned LEB128 value to SAA */
diff --git a/saa.h b/saa.h
index 32fae2b1..ffd42148 100644
--- a/saa.h
+++ b/saa.h
@@ -55,5 +55,6 @@ void saa_write32(struct SAA *s, uint32_t v);
void saa_write64(struct SAA *s, uint64_t v);
void saa_wleb128u(struct SAA *, int); /* write unsigned LEB128 value */
void saa_wleb128s(struct SAA *, int); /* write signed LEB128 value */
+void saa_writeaddr(struct SAA *, uint64_t, size_t);
#endif /* NASM_SAA_H */