/* @(#)21060.h 1.5 8/31/92 1 */ #ifndef __21060_DEFINED #define __21060_DEFINED void idle(void); int timer_set(unsigned int tperiod, unsigned int tcount); unsigned int timer_on(void); unsigned int timer_off(void); int poll_flag_in(int flag, int mode); int set_flag(int flag, int mode); int test_and_set_semaphore(void *semaphore, int test_value, int set_value, int timeout); int set_semaphore(void *semaphore, int set_value, int timeout); int fpack(float); float funpack(int); #define READ_FLAG0 0 #define READ_FLAG1 1 #define READ_FLAG2 2 #define READ_FLAG3 3 #define SET_FLAG0 0 #define SET_FLAG1 1 #define SET_FLAG2 2 #define SET_FLAG3 3 #define SET_FLAG 0 #define CLR_FLAG 1 #define TGL_FLAG 2 #define TST_FLAG 3 #define FLAG_IN_LO_TO_HI 0 #define FLAG_IN_HI_TO_LO 1 #define FLAG_IN_HI 2 #define FLAG_IN_LO 3 #define FLAG_IN_TRANSITION 4 #define RETURN_FLAG_STATE 5 #define timer_on() \ ({ int __temp_ret; \ asm volatile ("\n\tBIT SET MODE2 32;\n"\ "\t%0=TCOUNT;" : "=d" (__temp_ret));\ __temp_ret;}) #define timer_off() \ ({ int __temp_ret; \ asm volatile ("\n\tBIT CLR MODE2 32;\n"\ "\t%0=TCOUNT;" : "=d" (__temp_ret));\ __temp_ret;}) #define timer_set(a,b) \ ({ int __temp_ret; \ asm volatile ("\n\tTPERIOD=%1;\n"\ "\tTCOUNT=%2;\n"\ "\t%0=MODE2;\n"\ "\t%0=FEXT %0 by 5:1;": "=&d" (__temp_ret): "d" (a), "d" (b):"TPERIOD", "TCOUNT");\ __temp_ret;}) /* Macros for conversion of 16 bit IEEE floating point number */ #define fpack(a) ({float ___x = (a); int ___b; \ asm volatile (\ "/* This Code enables one to turn a 32 bit floating pt. number to a 16 bit */\n"\ "/* floating point number in C. */\n"\ "%0=fpack %1;": "=d" (___b) : "d" (___x) );\ ___b;}) #define funpack(c) ({int ___x = (c); float ___d; \ asm volatile (\ "/* This Code enables one to turn a 16 bit floating pt. number to a 32 bit */\n"\ "/* floating point number in C. */\n"\ "%0=funpack %1;": "=d" (___d) : "d" (___x) );\ ___d;}) #endif