xref: /netbsd/sys/external/bsd/gnu-efi/dist/inc/efirtlib.h (revision 51e65385)
1*51e65385Sjmcneill /*	$NetBSD: efirtlib.h,v 1.1.1.3 2021/09/30 18:50:09 jmcneill Exp $	*/
201d0c315Sjakllsch 
301d0c315Sjakllsch #ifndef _EFI_RT_LIB_INCLUDE_
401d0c315Sjakllsch #define _EFI_RT_LIB_INCLUDE_
501d0c315Sjakllsch /*++
601d0c315Sjakllsch 
701d0c315Sjakllsch Copyright (c) 1998  Intel Corporation
801d0c315Sjakllsch 
901d0c315Sjakllsch Module Name:
1001d0c315Sjakllsch 
1101d0c315Sjakllsch     efilib.h
1201d0c315Sjakllsch 
1301d0c315Sjakllsch Abstract:
1401d0c315Sjakllsch 
1501d0c315Sjakllsch     EFI Runtime library functions
1601d0c315Sjakllsch 
1701d0c315Sjakllsch 
1801d0c315Sjakllsch 
1901d0c315Sjakllsch Revision History
2001d0c315Sjakllsch 
2101d0c315Sjakllsch --*/
2201d0c315Sjakllsch 
2301d0c315Sjakllsch #include "efidebug.h"
2401d0c315Sjakllsch #include "efipart.h"
25*51e65385Sjmcneill #if defined(_M_X64) || defined(__x86_64__) || defined(__amd64__)
26*51e65385Sjmcneill #include "x86_64/efilibplat.h"
27*51e65385Sjmcneill #elif defined(_M_IX86) || defined(__i386__)
28*51e65385Sjmcneill #include "ia32/efilibplat.h"
29*51e65385Sjmcneill #elif defined(_M_IA64) || defined(__ia64__)
30*51e65385Sjmcneill #include "ia64/efilibplat.h"
31*51e65385Sjmcneill #elif defined (_M_ARM64) || defined(__aarch64__)
32*51e65385Sjmcneill #include "aarch64/efilibplat.h"
33*51e65385Sjmcneill #elif defined (_M_ARM) || defined(__arm__)
34*51e65385Sjmcneill #include "arm/efilibplat.h"
35*51e65385Sjmcneill #elif defined (_M_MIPS64) || defined(__mips64__)
36*51e65385Sjmcneill #include "mips64el/efilibplat.h"
37*51e65385Sjmcneill #elif defined (__riscv) && __riscv_xlen == 64
38*51e65385Sjmcneill #include "riscv64/efilibplat.h"
39*51e65385Sjmcneill #endif
4001d0c315Sjakllsch 
4101d0c315Sjakllsch 
4201d0c315Sjakllsch VOID
4301d0c315Sjakllsch RUNTIMEFUNCTION
4401d0c315Sjakllsch RtZeroMem (
4501d0c315Sjakllsch     IN VOID     *Buffer,
4601d0c315Sjakllsch     IN UINTN     Size
4701d0c315Sjakllsch     );
4801d0c315Sjakllsch 
4901d0c315Sjakllsch VOID
5001d0c315Sjakllsch RUNTIMEFUNCTION
5101d0c315Sjakllsch RtSetMem (
5201d0c315Sjakllsch     IN VOID     *Buffer,
5301d0c315Sjakllsch     IN UINTN    Size,
5401d0c315Sjakllsch     IN UINT8    Value
5501d0c315Sjakllsch     );
5601d0c315Sjakllsch 
5701d0c315Sjakllsch VOID
5801d0c315Sjakllsch RUNTIMEFUNCTION
5901d0c315Sjakllsch RtCopyMem (
6001d0c315Sjakllsch     IN VOID     *Dest,
61974f52d2Sjmcneill     IN CONST VOID     *Src,
6201d0c315Sjakllsch     IN UINTN    len
6301d0c315Sjakllsch     );
6401d0c315Sjakllsch 
6501d0c315Sjakllsch INTN
6601d0c315Sjakllsch RUNTIMEFUNCTION
6701d0c315Sjakllsch RtCompareMem (
68974f52d2Sjmcneill     IN CONST VOID     *Dest,
69974f52d2Sjmcneill     IN CONST VOID     *Src,
7001d0c315Sjakllsch     IN UINTN    len
7101d0c315Sjakllsch     );
7201d0c315Sjakllsch 
7301d0c315Sjakllsch INTN
7401d0c315Sjakllsch RUNTIMEFUNCTION
7501d0c315Sjakllsch RtStrCmp (
76974f52d2Sjmcneill     IN CONST CHAR16   *s1,
77974f52d2Sjmcneill     IN CONST CHAR16   *s2
7801d0c315Sjakllsch     );
7901d0c315Sjakllsch 
8001d0c315Sjakllsch 
8101d0c315Sjakllsch VOID
8201d0c315Sjakllsch RUNTIMEFUNCTION
8301d0c315Sjakllsch RtStrCpy (
8401d0c315Sjakllsch     IN CHAR16   *Dest,
85974f52d2Sjmcneill     IN CONST CHAR16    *Src
86974f52d2Sjmcneill     );
87974f52d2Sjmcneill 
88974f52d2Sjmcneill VOID
89974f52d2Sjmcneill RUNTIMEFUNCTION
90974f52d2Sjmcneill RtStrnCpy (
91974f52d2Sjmcneill     IN CHAR16   *Dest,
92974f52d2Sjmcneill     IN CONST CHAR16    *Src,
93974f52d2Sjmcneill     IN UINTN     Len
94974f52d2Sjmcneill     );
95974f52d2Sjmcneill 
96974f52d2Sjmcneill CHAR16 *
97974f52d2Sjmcneill RUNTIMEFUNCTION
98974f52d2Sjmcneill RtStpCpy (
99974f52d2Sjmcneill     IN CHAR16   *Dest,
100974f52d2Sjmcneill     IN CONST CHAR16    *Src
101974f52d2Sjmcneill     );
102974f52d2Sjmcneill 
103974f52d2Sjmcneill CHAR16 *
104974f52d2Sjmcneill RUNTIMEFUNCTION
105974f52d2Sjmcneill RtStpnCpy (
106974f52d2Sjmcneill     IN CHAR16   *Dest,
107974f52d2Sjmcneill     IN CONST CHAR16    *Src,
108974f52d2Sjmcneill     IN UINTN     Len
10901d0c315Sjakllsch     );
11001d0c315Sjakllsch 
11101d0c315Sjakllsch VOID
11201d0c315Sjakllsch RUNTIMEFUNCTION
11301d0c315Sjakllsch RtStrCat (
11401d0c315Sjakllsch     IN CHAR16   *Dest,
115974f52d2Sjmcneill     IN CONST CHAR16   *Src
116974f52d2Sjmcneill     );
117974f52d2Sjmcneill 
118974f52d2Sjmcneill VOID
119974f52d2Sjmcneill RUNTIMEFUNCTION
120974f52d2Sjmcneill RtStrnCat (
121974f52d2Sjmcneill     IN CHAR16   *Dest,
122974f52d2Sjmcneill     IN CONST CHAR16   *Src,
123974f52d2Sjmcneill     IN UINTN     Len
12401d0c315Sjakllsch     );
12501d0c315Sjakllsch 
12601d0c315Sjakllsch UINTN
12701d0c315Sjakllsch RUNTIMEFUNCTION
12801d0c315Sjakllsch RtStrLen (
129974f52d2Sjmcneill     IN CONST CHAR16   *s1
130974f52d2Sjmcneill     );
131974f52d2Sjmcneill 
132974f52d2Sjmcneill UINTN
133974f52d2Sjmcneill RUNTIMEFUNCTION
134974f52d2Sjmcneill RtStrnLen (
135974f52d2Sjmcneill     IN CONST CHAR16   *s1,
136974f52d2Sjmcneill     IN UINTN           Len
13701d0c315Sjakllsch     );
13801d0c315Sjakllsch 
13901d0c315Sjakllsch UINTN
14001d0c315Sjakllsch RUNTIMEFUNCTION
14101d0c315Sjakllsch RtStrSize (
142974f52d2Sjmcneill     IN CONST CHAR16   *s1
14301d0c315Sjakllsch     );
14401d0c315Sjakllsch 
14501d0c315Sjakllsch INTN
14601d0c315Sjakllsch RUNTIMEFUNCTION
14701d0c315Sjakllsch RtCompareGuid (
14801d0c315Sjakllsch     IN EFI_GUID     *Guid1,
14901d0c315Sjakllsch     IN EFI_GUID     *Guid2
15001d0c315Sjakllsch     );
15101d0c315Sjakllsch 
15201d0c315Sjakllsch UINT8
15301d0c315Sjakllsch RUNTIMEFUNCTION
15401d0c315Sjakllsch RtDecimaltoBCD(
15501d0c315Sjakllsch     IN  UINT8 BcdValue
15601d0c315Sjakllsch     );
15701d0c315Sjakllsch 
15801d0c315Sjakllsch UINT8
15901d0c315Sjakllsch RUNTIMEFUNCTION
16001d0c315Sjakllsch RtBCDtoDecimal(
16101d0c315Sjakllsch     IN  UINT8 BcdValue
16201d0c315Sjakllsch     );
16301d0c315Sjakllsch 
16401d0c315Sjakllsch //
16501d0c315Sjakllsch // Virtual mapping transition support.  (Only used during
16601d0c315Sjakllsch // the virtual address change transisition)
16701d0c315Sjakllsch //
16801d0c315Sjakllsch 
16901d0c315Sjakllsch VOID
17001d0c315Sjakllsch RUNTIMEFUNCTION
17101d0c315Sjakllsch RtLibEnableVirtualMappings (
17201d0c315Sjakllsch     VOID
17301d0c315Sjakllsch     );
17401d0c315Sjakllsch 
17501d0c315Sjakllsch VOID
17601d0c315Sjakllsch RUNTIMEFUNCTION
17701d0c315Sjakllsch RtConvertList (
17801d0c315Sjakllsch     IN UINTN            DebugDisposition,
17901d0c315Sjakllsch     IN OUT LIST_ENTRY   *ListHead
18001d0c315Sjakllsch     );
18101d0c315Sjakllsch 
18201d0c315Sjakllsch VOID
18301d0c315Sjakllsch RUNTIMEFUNCTION
18401d0c315Sjakllsch RtAcquireLock (
18501d0c315Sjakllsch     IN FLOCK    *Lock
18601d0c315Sjakllsch     );
18701d0c315Sjakllsch 
18801d0c315Sjakllsch VOID
18901d0c315Sjakllsch RUNTIMEFUNCTION
19001d0c315Sjakllsch RtReleaseLock (
19101d0c315Sjakllsch     IN FLOCK    *Lock
19201d0c315Sjakllsch     );
19301d0c315Sjakllsch 
19401d0c315Sjakllsch 
19501d0c315Sjakllsch #endif
196