| #ifndef __OSDEP_H__ |
| #define __OSDEP_H__ |
| |
| /* |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License as |
| * published by the Free Software Foundation; either version 2, or (at |
| * your option) any later version. |
| */ |
| |
| #if defined(__linux__) || defined(__FreeBSD__) || defined(GRUB) |
| #define ETHERBOOT32 |
| #define ntohl(x) swap32(x) |
| #define htonl(x) swap32(x) |
| #define ntohs(x) swap16(x) |
| #define htons(x) swap16(x) |
| |
| static inline unsigned long int swap32(unsigned long int x) |
| { |
| __asm__("xchgb %b0,%h0\n\t" |
| "rorl $16,%0\n\t" |
| "xchgb %b0,%h0" |
| : "=q" (x) |
| : "0" (x)); |
| return x; |
| } |
| |
| static inline unsigned short int swap16(unsigned short int x) |
| { |
| __asm__("xchgb %b0,%h0" |
| : "=q" (x) |
| : "0" (x)); |
| return x; |
| } |
| |
| #ifndef GRUB |
| # include "linux-asm-string.h" |
| #endif /* ! GRUB */ |
| #include "linux-asm-io.h" |
| #ifndef GRUB |
| #define _edata edata /* ELF does not prepend a _ */ |
| #define _end end |
| #endif /* ! GRUB */ |
| #endif |
| |
| #ifdef __BCC__ |
| #define ETHERBOOT16 |
| #define inline |
| #define const |
| #define volatile |
| #define setjmp _setjmp /* they are that way in libc.a */ |
| #define longjmp _longjmp |
| |
| /* BCC include files are missing these. */ |
| typedef unsigned char u_char; |
| typedef unsigned short u_short; |
| typedef unsigned int u_int; |
| typedef unsigned long u_long; |
| #endif |
| |
| #if !defined(ETHERBOOT16) && !defined(ETHERBOOT32) |
| Error, neither ETHERBOOT16 nor ETHERBOOT32 defined |
| #endif |
| |
| #if defined(ETHERBOOT16) && defined(ETHERBOOT32) |
| Error, both ETHERBOOT16 and ETHERBOOT32 defined |
| #endif |
| |
| typedef unsigned long Address; |
| |
| /* ANSI prototyping macro */ |
| #ifdef __STDC__ |
| #define P(x) x |
| #else |
| #define P(x) () |
| #endif |
| |
| #endif |
| |
| /* |
| * Local variables: |
| * c-basic-offset: 8 |
| * End: |
| */ |