| #ifndef STDDEF_H |
| #define STDDEF_H |
| |
| typedef long ptrdiff_t; |
| #ifndef __SIZE_TYPE__ |
| #define __SIZE_TYPE__ unsigned long |
| #endif |
| typedef __SIZE_TYPE__ size_t; |
| /* There is a GCC macro for a size_t type, but not |
| * for a ssize_t type. Below construct tricks GCC |
| * into making __SIZE_TYPE__ signed. |
| */ |
| #define unsigned signed |
| typedef __SIZE_TYPE__ ssize_t; |
| #undef unsigned |
| |
| typedef int wchar_t; |
| typedef unsigned int wint_t; |
| |
| #define NULL ((void *)0) |
| |
| /* Standard units. */ |
| #define KiB (1<<10) |
| #define MiB (1<<20) |
| #define GiB (1<<30) |
| /* Could we ever run into this one? I hope we get this much memory! */ |
| #define TiB (1<<40) |
| |
| #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) |
| |
| #define check_member(structure, member, offset) _Static_assert( \ |
| offsetof(struct structure, member) == offset, \ |
| "`struct " #structure "` offset for `" #member "` is not " #offset ) |
| |
| #ifdef __PRE_RAM__ |
| #define ROMSTAGE_CONST const |
| #else |
| #define ROMSTAGE_CONST |
| #endif |
| |
| /* Work around non-writable data segment in execute-in-place romstage on x86. */ |
| #if defined(__PRE_RAM__) && CONFIG_ARCH_X86 |
| #define MAYBE_STATIC |
| #else |
| #define MAYBE_STATIC static |
| #endif |
| |
| |
| #endif /* STDDEF_H */ |