| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | 
							- /*
 
-  * util.h
 
-  * 
 
-  * Utility definitions.
 
-  * 
 
-  * Written & released by Keir Fraser <keir.xen@gmail.com>
 
-  * 
 
-  * This is free and unencumbered software released into the public domain.
 
-  * See the file COPYING for more details, or visit <http://unlicense.org>.
 
-  */
 
- #ifndef NDEBUG
 
- #define ASSERT(p) do { if (!(p)) illegal(); } while (0)
 
- #else
 
- #define ASSERT(p) do { if (0 && (p)) {} } while (0)
 
- #endif
 
- typedef char bool_t;
 
- #define TRUE 1
 
- #define FALSE 0
 
- #define LONG_MAX ((long int)((~0UL)>>1))
 
- #define LONG_MIN ((long int)~LONG_MAX)
 
- #ifndef offsetof
 
- #define offsetof(a,b) __builtin_offsetof(a,b)
 
- #endif
 
- #define container_of(ptr, type, member) ({                      \
 
-         typeof( ((type *)0)->member ) *__mptr = (ptr);          \
 
-         (type *)( (char *)__mptr - offsetof(type,member) );})
 
- #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
- #define min(x,y) ({                             \
 
-     const typeof(x) _x = (x);                   \
 
-     const typeof(y) _y = (y);                   \
 
-     (void) (&_x == &_y);                        \
 
-     _x < _y ? _x : _y; })
 
- #define max(x,y) ({                             \
 
-     const typeof(x) _x = (x);                   \
 
-     const typeof(y) _y = (y);                   \
 
-     (void) (&_x == &_y);                        \
 
-     _x > _y ? _x : _y; })
 
- #define min_t(type,x,y) \
 
-     ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
 
- #define max_t(type,x,y) \
 
-     ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
 
- /* Fast memset/memcpy: Pointers must be word-aligned, count must be a non-zero 
 
-  * multiple of 32 bytes. */
 
- void memset_fast(void *s, int c, size_t n);
 
- void memcpy_fast(void *dest, const void *src, size_t n);
 
- void *memset(void *s, int c, size_t n);
 
- void *memcpy(void *dest, const void *src, size_t n);
 
- void *memmove(void *dest, const void *src, size_t n);
 
- int memcmp(const void *s1, const void *s2, size_t n);
 
- size_t strlen(const char *s);
 
- size_t strnlen(const char *s, size_t maxlen);
 
- int strcmp(const char *s1, const char *s2);
 
- int strncmp(const char *s1, const char *s2, size_t n);
 
- int vsnprintf(char *str, size_t size, const char *format, va_list ap)
 
-     __attribute__ ((format (printf, 3, 0)));
 
- int snprintf(char *str, size_t size, const char *format, ...)
 
-     __attribute__ ((format (printf, 3, 4)));
 
- #define le16toh(x) (x)
 
- #define le32toh(x) (x)
 
- #define htole16(x) (x)
 
- #define htole32(x) (x)
 
- #define be16toh(x) _rev16(x)
 
- #define be32toh(x) _rev32(x)
 
- #define htobe16(x) _rev16(x)
 
- #define htobe32(x) _rev32(x)
 
- /* Board-specific callouts */
 
- void board_init(void);
 
- #ifndef NDEBUG
 
- /* Serial console control */
 
- void console_init(void);
 
- void console_crash_on_input(void);
 
- /* Serial console output */
 
- int vprintk(const char *format, va_list ap)
 
-     __attribute__ ((format (printf, 1, 0)));
 
- int printk(const char *format, ...)
 
-     __attribute__ ((format (printf, 1, 2)));
 
- #else /* NDEBUG */
 
- #define console_init() ((void)0)
 
- #define console_crash_on_input() ((void)0)
 
- static inline int vprintk(const char *format, va_list ap) { return 0; }
 
- static inline int printk(const char *format, ...) { return 0; }
 
- #endif
 
- /* Floppy */
 
- void floppy_init(void);
 
- void floppy_process(void);
 
- /* CRC-CCITT */
 
- uint16_t crc16_ccitt(const void *buf, size_t len, uint16_t crc);
 
- /* Build info. */
 
- extern const uint8_t fw_major, fw_minor;
 
- /* Text/data/BSS address ranges. */
 
- extern char _stext[], _etext[];
 
- extern char _sdat[], _edat[], _ldat[];
 
- extern char _sbss[], _ebss[];
 
- /* Stacks. */
 
- extern uint32_t _thread_stacktop[], _thread_stackbottom[];
 
- extern uint32_t _irq_stacktop[], _irq_stackbottom[];
 
- /* Default exception handler. */
 
- void EXC_unused(void);
 
- /* IRQ priorities, 0 (highest) to 15 (lowest). */
 
- #define RESET_IRQ_PRI         0
 
- #define INDEX_IRQ_PRI         2
 
- #define TIMER_IRQ_PRI         4
 
- /*
 
-  * Local variables:
 
-  * mode: C
 
-  * c-file-style: "Linux"
 
-  * c-basic-offset: 4
 
-  * tab-width: 4
 
-  * indent-tabs-mode: nil
 
-  * End:
 
-  */
 
 
  |