This patch adds some simple constants to more easily write and do math with frequencies, analogous to the existing KiB, MiB and GiB constants for sizes. They are exemplary added to the Veyron_Pinky/Rk3288 code for now and will hopefully be adopted by other parts of the codebase in the future. BUG=None TEST=Compiled Veyron_Pinky. Change-Id: I4a1927fd423eb96d3f76f7e44b451192038b02e0 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/221800 Reviewed-by: David Hendricks <dhendrix@chromium.org>
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#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 KHz (1000)
|
|
#define MHz (1000*KHz)
|
|
#define GHz (1000*MHz)
|
|
|
|
#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 */
|