diff options
author | cinap_lenrek <devnull@localhost> | 2011-03-30 15:08:40 +0000 |
---|---|---|
committer | cinap_lenrek <devnull@localhost> | 2011-03-30 15:08:40 +0000 |
commit | 9b675a9941c8cc7957b3996e10fefdf40be0eb7e (patch) | |
tree | 2a55aaed627a642b2283434cd0d4bb7264208a00 /amd64 | |
parent | 55613b56d78d8e349174cbd576e346284977c362 (diff) |
continue...
Diffstat (limited to 'amd64')
-rw-r--r-- | amd64/include/u.h | 72 | ||||
-rw-r--r-- | amd64/include/ureg.h | 30 | ||||
-rw-r--r-- | amd64/mkfile | 6 |
3 files changed, 108 insertions, 0 deletions
diff --git a/amd64/include/u.h b/amd64/include/u.h new file mode 100644 index 000000000..feb121703 --- /dev/null +++ b/amd64/include/u.h @@ -0,0 +1,72 @@ +#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 long uintptr; +typedef unsigned long usize; +typedef ushort Rune; +typedef union FPdbleword FPdbleword; +typedef uvlong 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; + +/* MXCSR */ +/* fcr */ +#define FPFTZ (1<<15) /* amd64 */ +#define FPINEX (1<<12) +#define FPUNFL (1<<11) +#define FPOVFL (1<<10) +#define FPZDIV (1<<9) +#define FPDNRM (1<<8) /* amd64 */ +#define FPINVAL (1<<7) +#define FPDAZ (1<<6) /* amd64 */ +#define FPRNR (0<<13) +#define FPRZ (3<<13) +#define FPRPINF (2<<13) +#define FPRNINF (1<<13) +#define FPRMASK (3<<13) +#define FPPEXT 0 +#define FPPSGL 0 +#define FPPDBL 0 +#define FPPMASK 0 +/* fsr */ +#define FPAINEX (1<<5) +#define FPAUNFL (1<<4) +#define FPAOVFL (1<<3) +#define FPAZDIV (1<<2) +#define FPADNRM (1<<1) /* not in plan 9 */ +#define FPAINVAL (1<<0) +union FPdbleword +{ + double x; + struct { /* little endian */ + uint lo; + uint hi; + }; +}; + +typedef char* va_list; +#define va_start(list, start) list =\ + (sizeof(start) < 8?\ + (char*)((vlong*)&(start)+1):\ + (char*)(&(start)+1)) +#define va_end(list)\ + USED(list) +#define va_arg(list, mode)\ + ((sizeof(mode) == 1)?\ + ((list += 8), (mode*)list)[-8]:\ + (sizeof(mode) == 2)?\ + ((list += 8), (mode*)list)[-4]:\ + (sizeof(mode) == 4)?\ + ((list += 8), (mode*)list)[-2]:\ + ((list += sizeof(mode)), (mode*)list)[-1]) diff --git a/amd64/include/ureg.h b/amd64/include/ureg.h new file mode 100644 index 000000000..bf0613ac0 --- /dev/null +++ b/amd64/include/ureg.h @@ -0,0 +1,30 @@ +struct Ureg { + u64int ax; + u64int bx; + u64int cx; + u64int dx; + u64int si; + u64int di; + u64int bp; + u64int r8; + u64int r9; + u64int r10; + u64int r11; + u64int r12; + u64int r13; + u64int r14; + u64int r15; + + u16int ds; + u16int es; + u16int fs; + u16int gs; + + u64int type; + u64int error; /* error code (or zero) */ + u64int ip; /* pc */ + u64int cs; /* old context */ + u64int flags; /* old flags */ + u64int sp; /* sp */ + u64int ss; /* old stack segment */ +}; diff --git a/amd64/mkfile b/amd64/mkfile new file mode 100644 index 000000000..09eacd85b --- /dev/null +++ b/amd64/mkfile @@ -0,0 +1,6 @@ +</sys/src/mkfile.proto + +CC=6c +LD=6l +O=6 +AS=6a |