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