summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-08-08 08:38:25 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-08-08 08:38:25 +0200
commitff6e15ec3a5b1810b2f7876cb90faf1ae81fff52 (patch)
treef22b03de7f63a024d0d77aa8ec6235fee4b9d306
parent1f8e6c916af4d10928b751c3bd8c3a6355267c39 (diff)
downloadplan9front-ff6e15ec3a5b1810b2f7876cb90faf1ae81fff52.tar.xz
add /spim
-rw-r--r--spim/include/u.h66
-rw-r--r--spim/include/ureg.h44
-rw-r--r--spim/mkfile6
3 files changed, 116 insertions, 0 deletions
diff --git a/spim/include/u.h b/spim/include/u.h
new file mode 100644
index 000000000..c30ebd882
--- /dev/null
+++ b/spim/include/u.h
@@ -0,0 +1,66 @@
+#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 unsigned long usize;
+typedef uint 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)?\
+ ((list += 4), (mode*)list)[-1]:\
+ (sizeof(mode) == 2)?\
+ ((list += 4), (mode*)list)[-1]:\
+ ((list += sizeof(mode)), (mode*)list)[-1])
diff --git a/spim/include/ureg.h b/spim/include/ureg.h
new file mode 100644
index 000000000..32cbfb3fc
--- /dev/null
+++ b/spim/include/ureg.h
@@ -0,0 +1,44 @@
+struct Ureg
+{
+ ulong status;
+ ulong pc;
+ union{
+ ulong sp; /* r29 */
+ ulong usp; /* r29 */
+ };
+ ulong cause;
+ ulong badvaddr;
+ ulong tlbvirt;
+ ulong hi;
+ ulong lo;
+ ulong r31;
+ ulong r30;
+ ulong r28;
+ ulong r27; /* unused */
+ ulong r26; /* unused */
+ ulong r25;
+ ulong r24;
+ ulong r23;
+ ulong r22;
+ ulong r21;
+ ulong r20;
+ ulong r19;
+ ulong r18;
+ ulong r17;
+ ulong r16;
+ ulong r15;
+ ulong r14;
+ ulong r13;
+ ulong r12;
+ ulong r11;
+ ulong r10;
+ ulong r9;
+ ulong r8;
+ ulong r7;
+ ulong r6;
+ ulong r5;
+ ulong r4;
+ ulong r3;
+ ulong r2;
+ ulong r1;
+};
diff --git a/spim/mkfile b/spim/mkfile
new file mode 100644
index 000000000..7d76319c0
--- /dev/null
+++ b/spim/mkfile
@@ -0,0 +1,6 @@
+</sys/src/mkfile.proto
+
+CC=0c
+LD=0l
+O=0
+AS=0a