SAA: add saa_writeaddr() similar to other locations
authorH. Peter Anvin <hpa@zytor.com>
Sat, 18 Oct 2008 02:30:34 +0000 (19:30 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Sat, 18 Oct 2008 02:30:34 +0000 (19:30 -0700)
Provide saa_writeaddr() to write an integer in x86 format.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
saa.c
saa.h

diff --git a/saa.c b/saa.c
index 5fab4bb..b506833 100644 (file)
--- 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 32fae2b..ffd4214 100644 (file)
--- 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 */