aboutsummaryrefslogtreecommitdiff
path: root/src/include/ipxe/efi/ProcessorBind.h
blob: eda609b9453256817767961635527592e5aa0e88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef _IPXE_EFI_PROCESSOR_BIND_H
#define _IPXE_EFI_PROCESSOR_BIND_H

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

/*
 * EFI header files rely on having the CPU architecture directory
 * present in the search path in order to pick up ProcessorBind.h.  We
 * use this header file as a quick indirection layer.
 *  - mcb30
 */

#ifdef EFI_HOSTONLY

/*
 * We cannot rely on the EDK2 ProcessorBind.h headers when compiling a
 * binary for execution on the build host itself, since the host's CPU
 * architecture may not even be supported by EDK2.
 */

/* Define the basic integer types in terms of the host's <stdint.h> */
#include <stdint.h>
typedef int8_t INT8;
typedef int16_t INT16;
typedef int32_t INT32;
typedef int64_t INT64;
typedef uint8_t UINT8;
typedef long INTN;
typedef uint16_t UINT16;
typedef uint32_t UINT32;
typedef uint64_t UINT64;
typedef unsigned long UINTN;
typedef int8_t CHAR8;
typedef int16_t CHAR16;
typedef uint8_t BOOLEAN;

/* Define EFIAPI as whatever API the host uses by default */
#define EFIAPI

/* Define an architecture-neutral MDE_CPU macro to prevent build errors */
#define MDE_CPU_EBC

#else /* EFI_HOSTONLY */

#ifdef __i386__
#include <ipxe/efi/Ia32/ProcessorBind.h>
#endif

#ifdef __x86_64__
#include <ipxe/efi/X64/ProcessorBind.h>
#endif

#ifdef __arm__
#include <ipxe/efi/Arm/ProcessorBind.h>
#endif

#ifdef __aarch64__
#include <ipxe/efi/AArch64/ProcessorBind.h>
#endif

#endif /* EFI_HOSTONLY */

#endif /* _IPXE_EFI_PROCESSOR_BIND_H */