3 Copyright 2002 Broadcom Corp. All Rights Reserved.
5 This program is free software; you can distribute it and/or modify it
6 under the terms of the GNU General Public License (Version 2) as
7 published by the Free Software Foundation.
9 This program is distributed in the hope it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation, Inc.,
16 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
21 // bcmtypes.h - misc useful typedefs
26 // These are also defined in typedefs.h in the application area, so I need to
27 // protect against re-definition.
30 typedef unsigned char uint8;
31 typedef unsigned short uint16;
32 typedef unsigned long uint32;
33 typedef signed char int8;
34 typedef signed short int16;
35 typedef signed long int32;
36 #if !defined(__cplusplus)
41 typedef unsigned char byte;
42 // typedef unsigned long sem_t;
44 typedef unsigned long HANDLE,*PULONG,DWORD,*PDWORD;
45 typedef signed long LONG,*PLONG;
47 typedef unsigned int *PUINT;
48 typedef signed int INT;
50 typedef unsigned short *PUSHORT;
51 typedef signed short SHORT,*PSHORT;
52 typedef unsigned short WORD,*PWORD;
54 typedef unsigned char *PUCHAR;
55 typedef signed char *PCHAR;
59 typedef unsigned char BOOLEAN, *PBOOL, *PBOOLEAN;
61 typedef unsigned char BYTE,*PBYTE;
64 //The following has been defined in Vxworks internally: vxTypesOld.h
65 //redefine under vxworks will cause error
66 typedef signed int *PINT;
68 typedef signed char INT8;
69 typedef signed short INT16;
70 typedef signed long INT32;
72 typedef unsigned char UINT8;
73 typedef unsigned short UINT16;
74 typedef unsigned long UINT32;
76 typedef unsigned char UCHAR;
77 typedef unsigned short USHORT;
78 typedef unsigned int UINT;
79 typedef unsigned long ULONG;
82 typedef unsigned char BOOL;
84 //#endif /* __GNUC__ */
87 // These are also defined in typedefs.h in the application area, so I need to
88 // protect against re-definition.
91 // Maximum and minimum values for a signed 16 bit integer.
92 #define MAX_INT16 32767
93 #define MIN_INT16 -32768
95 // Useful for true/false return values. This uses the
96 // Taligent notation (k for constant).
105 /* macros to protect against unaligned accesses */
108 /* first arg is an address, second is a value */
109 #define PUT16( a, d ) { \
110 *((byte *)a) = (byte)((d)>>8); \
111 *(((byte *)a)+1) = (byte)(d); \
114 #define PUT32( a, d ) { \
115 *((byte *)a) = (byte)((d)>>24); \
116 *(((byte *)a)+1) = (byte)((d)>>16); \
117 *(((byte *)a)+2) = (byte)((d)>>8); \
118 *(((byte *)a)+3) = (byte)(d); \
121 /* first arg is an address, returns a value */
122 #define GET16( a ) ( \
123 (*((byte *)a) << 8) | \
127 #define GET32( a ) ( \
128 (*((byte *)a) << 24) | \
129 (*(((byte *)a)+1) << 16) | \
130 (*(((byte *)a)+2) << 8) | \
159 #define READ32(addr) (*(volatile UINT32 *)((ULONG)&addr))
160 #define READ16(addr) (*(volatile UINT16 *)((ULONG)&addr))
161 #define READ8(addr) (*(volatile UINT8 *)((ULONG)&addr))