From ff6e15ec3a5b1810b2f7876cb90faf1ae81fff52 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 8 Aug 2015 08:38:25 +0200 Subject: [PATCH] add /spim --- spim/include/u.h | 66 +++++++++++++++++++++++++++++++++++++++++++++ spim/include/ureg.h | 44 ++++++++++++++++++++++++++++++ spim/mkfile | 6 +++++ 3 files changed, 116 insertions(+) create mode 100644 spim/include/u.h create mode 100644 spim/include/ureg.h create mode 100644 spim/mkfile 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 @@ +