00001 #ifndef NULL
00002 # define NULL ((void *) 0)
00003 #endif
00004
00005 typedef short unsigned int ushort;
00006 typedef short signed int sshort;
00007 typedef unsigned char uchar;
00008 typedef signed char schar;
00009 typedef signed long int slong;
00010 typedef unsigned long int ulong;
00011 typedef enum {false, true} bool;
00012
00013 register char *_sp __asm__ ("sp");
00014
00015
00016
00017
00018 extern unsigned short _d1 __asm__("_.d1");
00019 extern unsigned short _d2 __asm__("_.d2");
00020 extern unsigned short _d3 __asm__("_.d3");
00021 extern unsigned short _d4 __asm__("_.d4");
00022 extern unsigned short _d5 __asm__("_.d5");
00023 extern unsigned short _d6 __asm__("_.d6");
00024 extern unsigned short _d7 __asm__("_.d7");
00025 extern unsigned short _d8 __asm__("_.d8");
00026 extern unsigned short _tmp __asm__("_.tmp");
00027 extern unsigned short _z __asm__("_.z");
00028 extern unsigned short _xy __asm__("_.xy");
00029
00030
00031
00032 #define GCC_SOFTREGCOUNT 8
00033
00034 #define BIT0 0x01
00035 #define BIT1 0x02
00036 #define BIT2 0x04
00037 #define BIT3 0x08
00038 #define BIT4 0x10
00039 #define BIT5 0x20
00040 #define BIT6 0x40
00041 #define BIT7 0x80
00042
00043 #define TOUSHORT(var) (*(ushort *)&var)
00044 #define ASM_MOVW_MM(src, dst) __asm__ (\
00045 "movw %0, %1"\
00046 : \
00047 : "m" (src), "m" (dst) \
00048 )
00049 #define ASM_NOP __asm__ __volatile__ ("nop");
00050 #define ASM_SWI __asm__ __volatile__ ("swi");
00051 #define ASM_SEI __asm__ __volatile__ ("sei");
00052 #define ASM_CLI __asm__ __volatile__ ("cli");
00053 #define ASM_PULW(varword) __asm__ (\
00054 "puld\
00055 \n\tstd %0"\
00056 : "=m" (varword) \
00057 : \
00058 : "%d" \
00059 )
00060 #define ASM_PULB(varbyte) __asm__ (\
00061 "pulb\
00062 \n\tstab %0"\
00063 : "=m" (varbyte) \
00064 : \
00065 : "%b" \
00066 )
00067 #define ASM_PSHW(varword) __asm__ (\
00068 "ldd %0\
00069 \n\tpshd"\
00070 : \
00071 : "m" (varword) \
00072 : "%d" \
00073 )
00074 #define ASM_PSHB(varbyte) __asm__ (\
00075 "ldab %0\
00076 \n\tpshb"\
00077 : \
00078 : "m" (varbyte) \
00079 : "%b" \
00080 )