/* SPDX-License-Identifier: GPL-2.0-only */
/* This file is part of the coreboot project. */

#ifndef STDINT_H
#define STDINT_H

/* Fixed width integer types */
typedef signed char        int8_t;
typedef unsigned char      uint8_t;

typedef signed short       int16_t;
typedef unsigned short     uint16_t;

typedef signed int         int32_t;
typedef unsigned int       uint32_t;

typedef signed long long   int64_t;
typedef unsigned long long uint64_t;

/* Types for 'void *' pointers */
typedef signed long        intptr_t;
typedef unsigned long      uintptr_t;

/* Ensure that the widths are all correct */
_Static_assert(sizeof(int8_t) == 1, "Size of int8_t is incorrect");
_Static_assert(sizeof(uint8_t) == 1, "Size of uint8_t is incorrect");

_Static_assert(sizeof(int16_t) == 2, "Size of int16_t is incorrect");
_Static_assert(sizeof(uint16_t) == 2, "Size of uint16_t is incorrect");

_Static_assert(sizeof(int32_t) == 4, "Size of int32_t is incorrect");
_Static_assert(sizeof(uint32_t) == 4, "Size of uint32_t is incorrect");

_Static_assert(sizeof(int64_t) == 8, "Size of int64_t is incorrect");
_Static_assert(sizeof(uint64_t) == 8, "Size of uint64_t is incorrect");

_Static_assert(sizeof(intptr_t) == sizeof(void *), "Size of intptr_t is incorrect");
_Static_assert(sizeof(uintptr_t) == sizeof(void *), "Size of uintptr_t is incorrect");

/* Maximum width integer types */
typedef int64_t  intmax_t;
typedef uint64_t uintmax_t;

/* Convenient typedefs */
typedef int8_t   s8;
typedef uint8_t  u8;

typedef int16_t  s16;
typedef uint16_t u16;

typedef int32_t  s32;
typedef uint32_t u32;

typedef int64_t  s64;
typedef uint64_t u64;

/* Limits of integer types */
#define INT8_MIN   ((int8_t)0x80)
#define INT8_MAX   ((int8_t)0x7F)
#define UINT8_MAX  ((uint8_t)0xFF)

#define INT16_MIN  ((int16_t)0x8000)
#define INT16_MAX  ((int16_t)0x7FFF)
#define UINT16_MAX ((uint16_t)0xFFFF)

#define INT32_MIN  ((int32_t)0x80000000)
#define INT32_MAX  ((int32_t)0x7FFFFFFF)
#define UINT32_MAX ((uint32_t)0xFFFFFFFF)

#define INT64_MIN  ((int64_t)0x8000000000000000)
#define INT64_MAX  ((int64_t)0x7FFFFFFFFFFFFFFF)
#define UINT64_MAX ((uint64_t)0xFFFFFFFFFFFFFFFF)

#define INTMAX_MIN  INT64_MIN
#define INTMAX_MAX  INT64_MAX
#define UINTMAX_MAX UINT64_MAX

#endif /* STDINT_H */
