summaryrefslogtreecommitdiff
path: root/amd64
diff options
context:
space:
mode:
authorcinap_lenrek <devnull@localhost>2011-03-30 15:08:40 +0000
committercinap_lenrek <devnull@localhost>2011-03-30 15:08:40 +0000
commit9b675a9941c8cc7957b3996e10fefdf40be0eb7e (patch)
tree2a55aaed627a642b2283434cd0d4bb7264208a00 /amd64
parent55613b56d78d8e349174cbd576e346284977c362 (diff)
continue...
Diffstat (limited to 'amd64')
-rw-r--r--amd64/include/u.h72
-rw-r--r--amd64/include/ureg.h30
-rw-r--r--amd64/mkfile6
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