mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-25 16:49:23 +00:00
85 lines
1.7 KiB
C
85 lines
1.7 KiB
C
#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:
|
|
*/
|