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/arm/include | |
| parent | 54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff) | |
20060303a
Diffstat (limited to 'Inferno/arm/include')
| -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 |
3 files changed, 97 insertions, 0 deletions
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; |
