diff options
Diffstat (limited to 'Inferno')
| -rw-r--r-- | Inferno/386/include/lib9.h | 8 | ||||
| -rw-r--r-- | Inferno/386/include/u.h | 64 | ||||
| -rw-r--r-- | Inferno/386/include/ureg.h | 25 | ||||
| -rw-r--r-- | Inferno/arm/include/lib9.h | 8 | ||||
| -rw-r--r-- | Inferno/arm/include/u.h | 65 | ||||
| -rw-r--r-- | Inferno/arm/include/ureg.h | 24 | ||||
| -rw-r--r-- | Inferno/mips/include/lib9.h | 8 | ||||
| -rw-r--r-- | Inferno/mips/include/u.h | 65 | ||||
| -rw-r--r-- | Inferno/power/include/lib9.h | 4 | ||||
| -rw-r--r-- | Inferno/power/include/u.h | 84 | ||||
| -rw-r--r-- | Inferno/power/include/ureg.h | 43 | ||||
| -rw-r--r-- | Inferno/sparc/include/lib9.h | 9 | ||||
| -rw-r--r-- | Inferno/sparc/include/u.h | 64 | ||||
| -rw-r--r-- | Inferno/sparc/include/ureg.h | 45 | ||||
| -rw-r--r-- | Inferno/thumb/include/lib9.h | 8 | ||||
| -rw-r--r-- | Inferno/thumb/include/u.h | 65 | ||||
| -rw-r--r-- | Inferno/thumb/include/ureg.h | 24 |
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; |
