summaryrefslogtreecommitdiff
path: root/Inferno
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
commit37da2899f40661e3e9631e497da8dc59b971cbd0 (patch)
treecbc6d4680e347d906f5fa7fca73214418741df72 /Inferno
parent54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff)
20060303a
Diffstat (limited to 'Inferno')
-rw-r--r--Inferno/386/include/lib9.h8
-rw-r--r--Inferno/386/include/u.h64
-rw-r--r--Inferno/386/include/ureg.h25
-rw-r--r--Inferno/arm/include/lib9.h8
-rw-r--r--Inferno/arm/include/u.h65
-rw-r--r--Inferno/arm/include/ureg.h24
-rw-r--r--Inferno/mips/include/lib9.h8
-rw-r--r--Inferno/mips/include/u.h65
-rw-r--r--Inferno/power/include/lib9.h4
-rw-r--r--Inferno/power/include/u.h84
-rw-r--r--Inferno/power/include/ureg.h43
-rw-r--r--Inferno/sparc/include/lib9.h9
-rw-r--r--Inferno/sparc/include/u.h64
-rw-r--r--Inferno/sparc/include/ureg.h45
-rw-r--r--Inferno/thumb/include/lib9.h8
-rw-r--r--Inferno/thumb/include/u.h65
-rw-r--r--Inferno/thumb/include/ureg.h24
17 files changed, 613 insertions, 0 deletions
diff --git a/Inferno/386/include/lib9.h b/Inferno/386/include/lib9.h
new file mode 100644
index 00000000..1767d7b3
--- /dev/null
+++ b/Inferno/386/include/lib9.h
@@ -0,0 +1,8 @@
+#include <u.h>
+#include <kern.h>
+
+/*
+ * Extensions for Inferno to basic libc.h
+ */
+
+#define __LITTLE_ENDIAN /* math/dtoa.c only */
diff --git a/Inferno/386/include/u.h b/Inferno/386/include/u.h
new file mode 100644
index 00000000..5c07da93
--- /dev/null
+++ b/Inferno/386/include/u.h
@@ -0,0 +1,64 @@
+#define nil ((void*)0)
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef unsigned long uintptr;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC 0
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+
+/* FCR */
+#define FPINEX (1<<5)
+#define FPUNFL ((1<<4)|(1<<1))
+#define FPOVFL (1<<3)
+#define FPZDIV (1<<2)
+#define FPINVAL (1<<0)
+#define FPRNR (0<<10)
+#define FPRZ (3<<10)
+#define FPRPINF (2<<10)
+#define FPRNINF (1<<10)
+#define FPRMASK (3<<10)
+#define FPPEXT (3<<8)
+#define FPPSGL (0<<8)
+#define FPPDBL (2<<8)
+#define FPPMASK (3<<8)
+/* FSR */
+#define FPAINEX FPINEX
+#define FPAOVFL FPOVFL
+#define FPAUNFL FPUNFL
+#define FPAZDIV FPZDIV
+#define FPAINVAL FPINVAL
+union FPdbleword
+{
+ double x;
+ struct { /* little endian */
+ ulong lo;
+ ulong hi;
+ };
+};
+
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-4]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-2]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/386/include/ureg.h b/Inferno/386/include/ureg.h
new file mode 100644
index 00000000..31c3f961
--- /dev/null
+++ b/Inferno/386/include/ureg.h
@@ -0,0 +1,25 @@
+struct Ureg
+{
+ ulong di; /* general registers */
+ ulong si; /* ... */
+ ulong bp; /* ... */
+ ulong nsp;
+ ulong bx; /* ... */
+ ulong dx; /* ... */
+ ulong cx; /* ... */
+ ulong ax; /* ... */
+ ulong gs; /* data segments */
+ ulong fs; /* ... */
+ ulong es; /* ... */
+ ulong ds; /* ... */
+ ulong trap; /* trap type */
+ ulong ecode; /* error code (or zero) */
+ ulong pc; /* pc */
+ ulong cs; /* old context */
+ ulong flags; /* old flags */
+ union {
+ ulong usp;
+ ulong sp;
+ };
+ ulong ss; /* old stack segment */
+};
diff --git a/Inferno/arm/include/lib9.h b/Inferno/arm/include/lib9.h
new file mode 100644
index 00000000..aa72ded4
--- /dev/null
+++ b/Inferno/arm/include/lib9.h
@@ -0,0 +1,8 @@
+#include <u.h>
+#include <kern.h>
+
+/*
+ * Extensions for Inferno to basic libc.h
+ */
+
+#undef __LITTLE_ENDIAN /* math/dtoa.c; longs in ARM doubles are big-endian */
diff --git a/Inferno/arm/include/u.h b/Inferno/arm/include/u.h
new file mode 100644
index 00000000..2ab381d2
--- /dev/null
+++ b/Inferno/arm/include/u.h
@@ -0,0 +1,65 @@
+#define nil ((void*)0)
+
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC 0
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+typedef unsigned long uintptr;
+
+/* FCR */
+#define FPINEX (1<<20)
+#define FPUNFL (1<<19)
+#define FPOVFL (1<<18)
+#define FPZDIV (1<<17)
+#define FPINVAL (1<<16)
+#define FPRNR (0<<0)
+#define FPRZ (1<<0)
+#define FPRPINF (2<<0)
+#define FPRNINF (3<<0)
+#define FPRMASK (3<<0)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+/* FSR */
+#define FPAINEX (1<<4)
+#define FPAUNFL (1<<3)
+#define FPAOVFL (1<<2)
+#define FPAZDIV (1<<1)
+#define FPAINVAL (1<<0)
+union FPdbleword
+{
+ double x;
+ struct { /* big endian (on 7500) */
+ ulong hi;
+ ulong lo;
+ };
+};
+
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-4]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-2]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/arm/include/ureg.h b/Inferno/arm/include/ureg.h
new file mode 100644
index 00000000..7784f4d5
--- /dev/null
+++ b/Inferno/arm/include/ureg.h
@@ -0,0 +1,24 @@
+typedef struct Ureg {
+ uint r0;
+ uint r1;
+ uint r2;
+ uint r3;
+ uint r4;
+ uint r5;
+ uint r6;
+ uint r7;
+ uint r8;
+ uint r9;
+ uint r10;
+ uint r11;
+ uint r12;
+ union {
+ uint r13;
+ uint sp;
+ };
+ uint r14;
+ uint link;
+ uint type;
+ uint psr;
+ uint pc;
+} Ureg;
diff --git a/Inferno/mips/include/lib9.h b/Inferno/mips/include/lib9.h
new file mode 100644
index 00000000..9315eea6
--- /dev/null
+++ b/Inferno/mips/include/lib9.h
@@ -0,0 +1,8 @@
+#include <u.h>
+#include <kern.h>
+
+/*
+ * Extensions for Inferno to basic libc.h
+ */
+
+#undef __LITTLE_ENDIAN /* math/dtoa.c; longs in MIPS doubles are big-endian */
diff --git a/Inferno/mips/include/u.h b/Inferno/mips/include/u.h
new file mode 100644
index 00000000..9df12bff
--- /dev/null
+++ b/Inferno/mips/include/u.h
@@ -0,0 +1,65 @@
+#define nil ((void*)0)
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef unsigned long uintptr;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC 0
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+
+/* FCR */
+#define FPINEX (1<<7)
+#define FPUNFL (1<<8)
+#define FPOVFL (1<<9)
+#define FPZDIV (1<<10)
+#define FPINVAL (1<<11)
+#define FPRNR (0<<0)
+#define FPRZ (1<<0)
+#define FPRPINF (2<<0)
+#define FPRNINF (3<<0)
+#define FPRMASK (3<<0)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+/* FSR */
+#define FPAINEX (1<<2)
+#define FPAOVFL (1<<4)
+#define FPAUNFL (1<<3)
+#define FPAZDIV (1<<5)
+#define FPAINVAL (1<<6)
+union FPdbleword
+{
+ double x;
+ struct { /* big endian */
+ ulong hi;
+ ulong lo;
+ };
+};
+
+/* stdarg */
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-1]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-1]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/power/include/lib9.h b/Inferno/power/include/lib9.h
new file mode 100644
index 00000000..6529a6c7
--- /dev/null
+++ b/Inferno/power/include/lib9.h
@@ -0,0 +1,4 @@
+#include <u.h>
+#include <kern.h>
+
+#undef __LITTLE_ENDIAN /* math/dtoa.c; longs in PowerPC doubles are big-endian */
diff --git a/Inferno/power/include/u.h b/Inferno/power/include/u.h
new file mode 100644
index 00000000..61e7d236
--- /dev/null
+++ b/Inferno/power/include/u.h
@@ -0,0 +1,84 @@
+#define nil ((void*)0)
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef unsigned long uintptr;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC 0
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+
+/* FPSCR */
+#define FPSFX (1<<31) /* exception summary (sticky) */
+#define FPSEX (1<<30) /* enabled exception summary */
+#define FPSVX (1<<29) /* invalid operation exception summary */
+#define FPSOX (1<<28) /* overflow exception OX (sticky) */
+#define FPSUX (1<<27) /* underflow exception UX (sticky) */
+#define FPSZX (1<<26) /* zero divide exception ZX (sticky) */
+#define FPSXX (1<<25) /* inexact exception XX (sticky) */
+#define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */
+#define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */
+#define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */
+#define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */
+#define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */
+#define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */
+#define FPSFR (1<<18) /* fraction rounded */
+#define FPSFI (1<<17) /* fraction inexact */
+#define FPSFPRF (1<<16) /* floating point result class */
+#define FPSFPCC (0xF<<12) /* <, >, =, unordered */
+#define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */
+#define FPVE (1<<7) /* invalid operation exception enable */
+#define FPOVFL (1<<6) /* enable overflow exceptions */
+#define FPUNFL (1<<5) /* enable underflow */
+#define FPZDIV (1<<4) /* enable zero divide */
+#define FPINEX (1<<3) /* enable inexact exceptions */
+#define FPRMASK (3<<0) /* rounding mode */
+#define FPRNR (0<<0)
+#define FPRZ (1<<0)
+#define FPRPINF (2<<0)
+#define FPRNINF (3<<0)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+#define FPINVAL FPVE
+
+#define FPAOVFL FPSOX
+#define FPAINEX FPSXX
+#define FPAUNFL FPSUX
+#define FPAZDIV FPSZX
+#define FPAINVAL FPSVX
+
+union FPdbleword
+{
+ double x;
+ struct { /* big endian */
+ ulong hi;
+ ulong lo;
+ };
+};
+
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-1]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-1]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/power/include/ureg.h b/Inferno/power/include/ureg.h
new file mode 100644
index 00000000..7ccdb492
--- /dev/null
+++ b/Inferno/power/include/ureg.h
@@ -0,0 +1,43 @@
+struct Ureg
+{
+ ulong cause;
+ union { ulong srr1; ulong status;};
+ ulong pc; /* SRR0 */
+ ulong pad;
+ ulong lr;
+ ulong cr;
+ ulong xer;
+ ulong ctr;
+ ulong r0;
+ union{ ulong r1; ulong sp; ulong usp; };
+ ulong r2;
+ ulong r3;
+ ulong r4;
+ ulong r5;
+ ulong r6;
+ ulong r7;
+ ulong r8;
+ ulong r9;
+ ulong r10;
+ ulong r11;
+ ulong r12;
+ ulong r13;
+ ulong r14;
+ ulong r15;
+ ulong r16;
+ ulong r17;
+ ulong r18;
+ ulong r19;
+ ulong r20;
+ ulong r21;
+ ulong r22;
+ ulong r23;
+ ulong r24;
+ ulong r25;
+ ulong r26;
+ ulong r27;
+ ulong r28;
+ ulong r29;
+ ulong r30;
+ ulong r31;
+};
diff --git a/Inferno/sparc/include/lib9.h b/Inferno/sparc/include/lib9.h
new file mode 100644
index 00000000..1a5b3e92
--- /dev/null
+++ b/Inferno/sparc/include/lib9.h
@@ -0,0 +1,9 @@
+#include <u.h>
+#include <kern.h>
+
+
+/*
+ * Extensions for Inferno to basic libc.h
+ */
+
+#undef __LITTLE_ENDIAN /* math/dtoa.c; longs in SPARC doubles are big-endian */
diff --git a/Inferno/sparc/include/u.h b/Inferno/sparc/include/u.h
new file mode 100644
index 00000000..6c0bd3f2
--- /dev/null
+++ b/Inferno/sparc/include/u.h
@@ -0,0 +1,64 @@
+#define nil ((void*)0)
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef unsigned long uintptr;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC (-8)
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+
+/* FCR */
+#define FPINEX (1<<23)
+#define FPOVFL (1<<26)
+#define FPUNFL (1<<25)
+#define FPZDIV (1<<24)
+#define FPRNR (0<<30)
+#define FPRZ (1<<30)
+#define FPINVAL (1<<27)
+#define FPRPINF (2<<30)
+#define FPRNINF (3<<30)
+#define FPRMASK (3<<30)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+/* FSR */
+#define FPAINEX (1<<5)
+#define FPAZDIV (1<<6)
+#define FPAUNFL (1<<7)
+#define FPAOVFL (1<<8)
+#define FPAINVAL (1<<9)
+union FPdbleword
+{
+ double x;
+ struct { /* big endian */
+ ulong hi;
+ ulong lo;
+ };
+};
+
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-1]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-1]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/sparc/include/ureg.h b/Inferno/sparc/include/ureg.h
new file mode 100644
index 00000000..8433eec9
--- /dev/null
+++ b/Inferno/sparc/include/ureg.h
@@ -0,0 +1,45 @@
+struct Ureg
+{
+ ulong r0; /* unnecessary; just for symmetry */
+ union{
+ ulong sp; /* r1 */
+ ulong usp; /* r1 */
+ ulong r1;
+ };
+ ulong r2;
+ ulong r3;
+ ulong r4;
+ ulong r5;
+ ulong r6;
+ ulong r7;
+ ulong r8;
+ ulong r9;
+ ulong r10;
+ ulong r11;
+ ulong r12;
+ ulong r13;
+ ulong r14;
+ ulong r15;
+ ulong r16;
+ ulong r17;
+ ulong r18;
+ ulong r19;
+ ulong r20;
+ ulong r21;
+ ulong r22;
+ ulong r23;
+ ulong r24;
+ ulong r25;
+ ulong r26;
+ ulong r27;
+ ulong r28;
+ ulong r29;
+ ulong r30;
+ ulong r31;
+ ulong y;
+ ulong tbr;
+ ulong psr;
+ ulong npc;
+ ulong pc;
+ ulong pad; /* so structure is double word aligned */
+};
diff --git a/Inferno/thumb/include/lib9.h b/Inferno/thumb/include/lib9.h
new file mode 100644
index 00000000..aa72ded4
--- /dev/null
+++ b/Inferno/thumb/include/lib9.h
@@ -0,0 +1,8 @@
+#include <u.h>
+#include <kern.h>
+
+/*
+ * Extensions for Inferno to basic libc.h
+ */
+
+#undef __LITTLE_ENDIAN /* math/dtoa.c; longs in ARM doubles are big-endian */
diff --git a/Inferno/thumb/include/u.h b/Inferno/thumb/include/u.h
new file mode 100644
index 00000000..2ab381d2
--- /dev/null
+++ b/Inferno/thumb/include/u.h
@@ -0,0 +1,65 @@
+#define nil ((void*)0)
+
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef unsigned int uint;
+typedef signed char schar;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef ushort Rune;
+typedef union FPdbleword FPdbleword;
+typedef long jmp_buf[2];
+#define JMPBUFSP 0
+#define JMPBUFPC 1
+#define JMPBUFDPC 0
+typedef unsigned int mpdigit; /* for /sys/include/mp.h */
+typedef unsigned char u8int;
+typedef unsigned short u16int;
+typedef unsigned int u32int;
+typedef unsigned long long u64int;
+typedef unsigned long uintptr;
+
+/* FCR */
+#define FPINEX (1<<20)
+#define FPUNFL (1<<19)
+#define FPOVFL (1<<18)
+#define FPZDIV (1<<17)
+#define FPINVAL (1<<16)
+#define FPRNR (0<<0)
+#define FPRZ (1<<0)
+#define FPRPINF (2<<0)
+#define FPRNINF (3<<0)
+#define FPRMASK (3<<0)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+/* FSR */
+#define FPAINEX (1<<4)
+#define FPAUNFL (1<<3)
+#define FPAOVFL (1<<2)
+#define FPAZDIV (1<<1)
+#define FPAINVAL (1<<0)
+union FPdbleword
+{
+ double x;
+ struct { /* big endian (on 7500) */
+ ulong hi;
+ ulong lo;
+ };
+};
+
+typedef char* va_list;
+#define va_start(list, start) list =\
+ (sizeof(start) < 4?\
+ (char*)((int*)&(start)+1):\
+ (char*)(&(start)+1))
+#define va_end(list)\
+ USED(list)
+#define va_arg(list, mode)\
+ ((sizeof(mode) == 1)?\
+ ((mode*)(list += 4))[-4]:\
+ (sizeof(mode) == 2)?\
+ ((mode*)(list += 4))[-2]:\
+ ((mode*)(list += sizeof(mode)))[-1])
diff --git a/Inferno/thumb/include/ureg.h b/Inferno/thumb/include/ureg.h
new file mode 100644
index 00000000..7784f4d5
--- /dev/null
+++ b/Inferno/thumb/include/ureg.h
@@ -0,0 +1,24 @@
+typedef struct Ureg {
+ uint r0;
+ uint r1;
+ uint r2;
+ uint r3;
+ uint r4;
+ uint r5;
+ uint r6;
+ uint r7;
+ uint r8;
+ uint r9;
+ uint r10;
+ uint r11;
+ uint r12;
+ union {
+ uint r13;
+ uint sp;
+ };
+ uint r14;
+ uint link;
+ uint type;
+ uint psr;
+ uint pc;
+} Ureg;