ref: 62ffb9c16e0e0490404f3b0a7c2c7c560fd56ec4
parent: beb7827425bc2412fc70b3c43a11564d68867d45
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Mar 8 22:04:08 EDT 2014
libmach: pragma pack 32bit Ureg structs for amd64 when libmach is compiled with 6c, unions in the 32bit Uregs cause fields to be wronly aligned. use #pragma pack arround the #include "/$objtype/include/ureg.h" statement.
--- a/sys/src/libmach/5.c
+++ b/sys/src/libmach/5.c
@@ -4,11 +4,13 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
-#include "/arm/include/ureg.h"
#include <mach.h>
+#pragma pack on
+#include "/arm/include/ureg.h"
+#pragma pack off
-#define REGOFF(x) (ulong) (&((struct Ureg *) 0)->x)
+#define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
#define SP REGOFF(r13)
#define PC REGOFF(pc)
--- a/sys/src/libmach/8.c
+++ b/sys/src/libmach/8.c
@@ -4,10 +4,13 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
-#include "/386/include/ureg.h"
#include <mach.h>
-#define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x)
+#pragma pack on
+#include "/386/include/ureg.h"
+#pragma pack off
+
+#define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
#define PC REGOFF(pc)
#define SP REGOFF(sp)
--- a/sys/src/libmach/k.c
+++ b/sys/src/libmach/k.c
@@ -4,10 +4,13 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
-#include "/sparc/include/ureg.h"
#include <mach.h>
-#define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x)
+#pragma pack on
+#include "/sparc/include/ureg.h"
+#pragma pack off
+
+#define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
#define R1 REGOFF(r1)
#define R7 REGOFF(r7)
--- a/sys/src/libmach/q.c
+++ b/sys/src/libmach/q.c
@@ -5,11 +5,13 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
-#include "/power/include/ureg.h"
#include <mach.h>
+#pragma pack on
+#include "/power/include/ureg.h"
+#pragma pack off
-#define REGOFF(x) (ulong) (&((struct Ureg *) 0)->x)
+#define REGOFF(x) (uintptr) (&((struct Ureg *) 0)->x)
#define SP REGOFF(sp)
#define PC REGOFF(pc)
--- a/sys/src/libmach/v.c
+++ b/sys/src/libmach/v.c
@@ -4,10 +4,13 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
-#include "/mips/include/ureg.h"
#include <mach.h>
-#define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x)
+#pragma pack on
+#include "/mips/include/ureg.h"
+#pragma pack off
+
+#define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
#define SP REGOFF(sp)
#define PC REGOFF(pc)