#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 int    u32int;

/* FCR */
#define FPINEX  (1<<5)
#define FPUNFL  ((1<<4)|(1<<1))
#define FPOVFL  (1<<3)
#define FPZDIV  (1<<2)
#define FPINVAL (1<<0)
#define FPRNR   (0<<10)
#define FPRZ    (3<<10)
#define FPRPINF (2<<10)
#define FPRNINF (1<<10)
#define FPRMASK (3<<10)
#define FPPEXT  (3<<8)
#define FPPSGL  (0<<8)
#define FPPDBL  (2<<8)
#define FPPMASK (3<<8)
/* FSR */
#define FPAINEX FPINEX
#define FPAOVFL FPOVFL
#define FPAUNFL FPUNFL
#define FPAZDIV FPZDIV
#define FPAINVAL        FPINVAL
union FPdbleword
{
       double  x;
       struct {        /* little endian */
               ulong lo;
               ulong hi;
       };
};

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])