git: 9front

Download patch

ref: e64a1aa0fab64812af4e8b1a56a1cfff48ec3868
parent: bf90b860183eaf90a8f852a3ef3c79cb13f176d4
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Mar 8 21:04:08 EST 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)
--