shithub: riscv

Download patch

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)