diff options
| author | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
| commit | 37da2899f40661e3e9631e497da8dc59b971cbd0 (patch) | |
| tree | cbc6d4680e347d906f5fa7fca73214418741df72 /Inferno/sparc | |
| parent | 54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff) | |
20060303a
Diffstat (limited to 'Inferno/sparc')
| -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 |
3 files changed, 118 insertions, 0 deletions
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 */ +}; |
