diff options
Diffstat (limited to 'sys/mips/include/defs.h')
-rw-r--r-- | sys/mips/include/defs.h | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/sys/mips/include/defs.h b/sys/mips/include/defs.h new file mode 100644 index 0000000..20d093e --- /dev/null +++ b/sys/mips/include/defs.h @@ -0,0 +1,256 @@ +/* + * Copyright (c) 1996, 2001-2003, 2005, Juniper Networks, Inc. + * All rights reserved. + * + * defs.h -- Simple universal types and definitions for use by the microkernel + * Jim Hayes, November 1996 + * + * JNPR: defs.h,v 1.3.2.1 2007/09/10 08:16:32 girish + * $FreeBSD$ + */ + +#ifndef __DEFS_H__ +#define __DEFS_H__ + +/* + * Paranoid compilation. If defined, the PARANOID flag will enable asserts, + * data structure magic stamping and a suite of other debug tools. To disable + * it, comment out its definition. + */ +#define PARANOID + +/* + * This is the ONLY place you should see hardware specific information + * encoded as #ifdefs. (Well, except for stdarg.h, perhaps.) + * I apologize in advance! + */ +#include <machine/defs_mips.h> +#define CPU_GOT_ONE + +#if !defined(CPU_GOT_ONE) +#error "YOU NEED TO SPECIFY ONE CPU TYPE TO USE THIS FILE" +#endif + +#ifdef TRUE +#undef TRUE +#endif + +#ifdef FALSE +#undef FALSE +#endif + +typedef enum boolean_ +{ + FALSE = 0, + TRUE = 1 +} boolean; + +/* + * Make NULL a pointer within the microkernel environment to catch + * pointer semantic miscreants. + * + * The reason it's conditional here is that some of the BSD includes + * define it multiple times as a straight integer and GCC barfs on + * the alternative prototypes. + */ + +#ifndef NULL +#define NULL (void *)0 +#endif + +/* + * Define some standard sized types. (Defined in cpu-specific type files + * included above.) + */ + +#define MAX_U8 255 +#define MAX_S8 128 +#define MIN_S8 -127 + +#define MAX_U16 0xffff +#define MIN_S16 ((int16_t)(1 << 15)) +#define MAX_S16 ((int16_t)~MIN_S16) + +#define MAX_U32 0xffffffff +#define MIN_S32 ((int32_t)(1 << 31)) +#define MAX_S32 ((int32_t)~MIN_S32) + +#define MAX_U64 ((u_int64_t)0 - 1) +#define MAX_S64 ((int64_t)(MAX_U64 >> 1)) +#define MIN_S64 (-MAX_S64-1) + +/* + * Solaris uses _SIZE_T to mark the fact that "size_t" has already + * been defined. _SYS_TYPES_H_ is used by BSD. + * + */ +#if !defined(_SYS_TYPES_H_) && !defined(_SIZE_T) +typedef UNSIGNED_32 size_t; +#define _SIZE_T +#endif + +#if !defined(_SYS_TYPES_H_) +typedef char * caddr_t; + +typedef UNSIGNED_8 u_int8_t; +typedef SIGNED_8 int8_t; + +typedef UNSIGNED_16 u_int16_t; +typedef SIGNED_16 int16_t; + +typedef UNSIGNED_32 u_int32_t; +typedef SIGNED_32 int32_t; + +typedef UNSIGNED_64 u_int64_t; +typedef SIGNED_64 int64_t; + +typedef UNSIGNED_32 u_long; +typedef UNSIGNED_16 u_short; +typedef UNSIGNED_8 u_char; + + +/* + * Define the standard terminology used in the diag software + * with regards to bytes, words, etc. + * BYTE = 8 bits + * HWORD (halfword) = 2 bytes or 16 bits + * WORD = 4 bytes or 32 bits + * QUAD = 8 bytes or 64 bits + * + * (The term QUAD seems less-than-intuitive here, but it is + * derived from BSD sources where it is defined as int64_t.) + * + * For consistency use the following defines wherever appropriate. + */ + +typedef enum { + NBI_BYTE = (sizeof(u_int8_t) * 8), + NBI_HWORD = (sizeof(u_int16_t) * 8), + NBI_WORD = (sizeof(u_int32_t) * 8), + NBI_QUAD = (sizeof(u_int64_t) * 8) +} num_bits_t; + +typedef enum { + NBY_BYTE = sizeof(u_int8_t), + NBY_HWORD = sizeof(u_int16_t), + NBY_WORD = sizeof(u_int32_t), + NBY_QUAD = sizeof(u_int64_t) +} num_bytes_t; + +/* + * We assume that pid values are 16 bit integers + */ + +typedef u_int16_t pid_t; + +#endif /* _SYS_TYPES_H_ */ + +typedef UNSIGNED_32 magic_t; +typedef int status_t; + +#define BITS_IN_BYTE 8 + +/* + * Packed definition. We use this for fields in network frames where we + * don't want the compiler to pack out to even alignment + */ + +#ifdef PACKED +#undef PACKED +#endif +#define PACKED(x) x __attribute__ ((packed)) + +/* + * __unused is a FreeBSDism that prevents the compiler from choking + * on function parameters that remain unused through the life of a + * function. This is not an issue for the Cygnus toolchain. In general + * it SHOULD NOT BE USED in the martini embedded software repository. + * It should only be used inside of shared code. + */ +#ifndef __unused +#define __unused __attribute__ ((__unused__)) +#endif + +/* + * Basic memory multiples + */ + +#define SIZE_1K 0x00000400 +#define SIZE_2K 0x00000800 +#define SIZE_4K 0x00001000 +#define SIZE_8K 0x00002000 +#define SIZE_16K 0x00004000 +#define SIZE_32K 0x00008000 +#define SIZE_64K 0x00010000 +#define SIZE_128K 0x00020000 +#define SIZE_256K 0x00040000 +#define SIZE_512K 0x00080000 +#define SIZE_1M 0x00100000 +#define SIZE_2M 0x00200000 +#define SIZE_4M 0x00400000 +#define SIZE_8M 0x00800000 +#define SIZE_16M 0x01000000 +#define SIZE_32M 0x02000000 +#define SIZE_64M 0x04000000 +#define SIZE_128M 0x08000000 +#define SIZE_256M 0x10000000 +#define SIZE_512M 0x20000000 +#define SIZE_1G 0x40000000 +#define SIZE_2G 0x80000000 + +/* + * swap16_inline + * swap32_inline + * + * Byteswap a 16 and 32 bit quantities + */ + +static inline u_int16_t +swap16_inline(u_int16_t data) +{ + return(((data & 0x00ff) << 8) | + ((data & 0xff00) >> 8)); +} + +static inline u_int32_t +swap32_inline(u_int32_t data) +{ + return(((data & 0x000000ff) << 24) | + ((data & 0x0000ff00) << 8) | + ((data & 0x00ff0000) >> 8) | + ((data & 0xff000000) >> 24)); +} + +/* + * Define errno_t here as it is needed by the rom and ukernel + */ +typedef u_int32_t errno_t; + +#define EOK 0 + +/* + * Define the main communication structure used for passing + * information from the rom to the ukernel (done here as it is + * used by them both) + */ +typedef struct rom_info_ rom_info_t; + +/* + * Typedef the return code from the ukernel to the ROM + */ +typedef u_int32_t rom_return_t; + +/* + * Pull in the relevant global environment header file + * + * This file is shared by the uKernel and the system simulation effort. + */ +#if defined(ENV_UKERN) || defined (ENV_SYS_SIM) +#include "ukern.h" +#endif /* ENV_UKERN */ + +#if defined(ENV_ROM) +#include "rom.h" +#endif + +#endif /* __DEFS_H__ */ |