Curle
d588e232c4
This branch has been dedicated to purely the UEFI bootloader. As such, all other code has been removed. This code can be compiled with Visual Studio, gcc or llvm.
146 lines
1.9 KiB
C
146 lines
1.9 KiB
C
/*++
|
|
|
|
Copyright (c) 1999 Intel Corporation
|
|
|
|
Module Name:
|
|
|
|
EfiRtLib.h
|
|
|
|
Abstract:
|
|
|
|
EFI Runtime library functions
|
|
|
|
|
|
|
|
Revision History
|
|
|
|
--*/
|
|
|
|
#include "efi.h"
|
|
#include "efilib.h"
|
|
#include "efirtlib.h"
|
|
|
|
#ifndef __GNUC__
|
|
#pragma RUNTIME_CODE(RtZeroMem)
|
|
#endif
|
|
VOID
|
|
RUNTIMEFUNCTION
|
|
RtZeroMem (
|
|
IN VOID *Buffer,
|
|
IN UINTN Size
|
|
)
|
|
{
|
|
INT8 *pt;
|
|
|
|
pt = Buffer;
|
|
while (Size--) {
|
|
*(pt++) = 0;
|
|
}
|
|
}
|
|
|
|
#ifndef __GNUC__
|
|
#pragma RUNTIME_CODE(RtSetMem)
|
|
#endif
|
|
VOID
|
|
RUNTIMEFUNCTION
|
|
RtSetMem (
|
|
IN VOID *Buffer,
|
|
IN UINTN Size,
|
|
IN UINT8 Value
|
|
)
|
|
{
|
|
INT8 *pt;
|
|
|
|
pt = Buffer;
|
|
while (Size--) {
|
|
*(pt++) = Value;
|
|
}
|
|
}
|
|
|
|
#ifndef __GNUC__
|
|
#pragma RUNTIME_CODE(RtCopyMem)
|
|
#endif
|
|
VOID
|
|
RUNTIMEFUNCTION
|
|
RtCopyMem (
|
|
IN VOID *Dest,
|
|
IN CONST VOID *Src,
|
|
IN UINTN len
|
|
)
|
|
{
|
|
CHAR8 *d;
|
|
CONST CHAR8 *s = Src;
|
|
d = Dest;
|
|
while (len--) {
|
|
*(d++) = *(s++);
|
|
}
|
|
}
|
|
|
|
#ifndef __GNUC__
|
|
#pragma RUNTIME_CODE(RtCompareMem)
|
|
#endif
|
|
INTN
|
|
RUNTIMEFUNCTION
|
|
RtCompareMem (
|
|
IN CONST VOID *Dest,
|
|
IN CONST VOID *Src,
|
|
IN UINTN len
|
|
)
|
|
{
|
|
CONST CHAR8 *d = Dest, *s = Src;
|
|
while (len--) {
|
|
if (*d != *s) {
|
|
return *d - *s;
|
|
}
|
|
|
|
d += 1;
|
|
s += 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#ifndef __GNUC__
|
|
#pragma RUNTIME_CODE(RtCompareGuid)
|
|
#endif
|
|
INTN
|
|
RUNTIMEFUNCTION
|
|
RtCompareGuid (
|
|
IN EFI_GUID *Guid1,
|
|
IN EFI_GUID *Guid2
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Compares to GUIDs
|
|
|
|
Arguments:
|
|
|
|
Guid1 - guid to compare
|
|
Guid2 - guid to compare
|
|
|
|
Returns:
|
|
= 0 if Guid1 == Guid2
|
|
|
|
--*/
|
|
{
|
|
INT32 *g1, *g2, r;
|
|
|
|
//
|
|
// Compare 32 bits at a time
|
|
//
|
|
|
|
g1 = (INT32 *) Guid1;
|
|
g2 = (INT32 *) Guid2;
|
|
|
|
r = g1[0] - g2[0];
|
|
r |= g1[1] - g2[1];
|
|
r |= g1[2] - g2[2];
|
|
r |= g1[3] - g2[3];
|
|
|
|
return r;
|
|
}
|
|
|
|
|