efirtlib.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /*++
  2. Copyright (c) 1999 Intel Corporation
  3. Module Name:
  4. EfiRtLib.h
  5. Abstract:
  6. EFI Runtime library functions
  7. Revision History
  8. --*/
  9. #include "efi.h"
  10. #include "efilib.h"
  11. #include "efirtlib.h"
  12. #ifndef __GNUC__
  13. #pragma RUNTIME_CODE(RtZeroMem)
  14. #endif
  15. VOID
  16. RUNTIMEFUNCTION
  17. RtZeroMem (
  18. IN VOID *Buffer,
  19. IN UINTN Size
  20. )
  21. {
  22. INT8 *pt;
  23. pt = Buffer;
  24. while (Size--) {
  25. *(pt++) = 0;
  26. }
  27. }
  28. #ifndef __GNUC__
  29. #pragma RUNTIME_CODE(RtSetMem)
  30. #endif
  31. VOID
  32. RUNTIMEFUNCTION
  33. RtSetMem (
  34. IN VOID *Buffer,
  35. IN UINTN Size,
  36. IN UINT8 Value
  37. )
  38. {
  39. INT8 *pt;
  40. pt = Buffer;
  41. while (Size--) {
  42. *(pt++) = Value;
  43. }
  44. }
  45. #ifndef __GNUC__
  46. #pragma RUNTIME_CODE(RtCopyMem)
  47. #endif
  48. VOID
  49. RUNTIMEFUNCTION
  50. RtCopyMem (
  51. IN VOID *Dest,
  52. IN CONST VOID *Src,
  53. IN UINTN len
  54. )
  55. {
  56. CHAR8 *d;
  57. CONST CHAR8 *s = Src;
  58. d = Dest;
  59. while (len--) {
  60. *(d++) = *(s++);
  61. }
  62. }
  63. #ifndef __GNUC__
  64. #pragma RUNTIME_CODE(RtCompareMem)
  65. #endif
  66. INTN
  67. RUNTIMEFUNCTION
  68. RtCompareMem (
  69. IN CONST VOID *Dest,
  70. IN CONST VOID *Src,
  71. IN UINTN len
  72. )
  73. {
  74. CONST CHAR8 *d = Dest, *s = Src;
  75. while (len--) {
  76. if (*d != *s) {
  77. return *d - *s;
  78. }
  79. d += 1;
  80. s += 1;
  81. }
  82. return 0;
  83. }
  84. #ifndef __GNUC__
  85. #pragma RUNTIME_CODE(RtCompareGuid)
  86. #endif
  87. INTN
  88. RUNTIMEFUNCTION
  89. RtCompareGuid (
  90. IN EFI_GUID *Guid1,
  91. IN EFI_GUID *Guid2
  92. )
  93. /*++
  94. Routine Description:
  95. Compares to GUIDs
  96. Arguments:
  97. Guid1 - guid to compare
  98. Guid2 - guid to compare
  99. Returns:
  100. = 0 if Guid1 == Guid2
  101. --*/
  102. {
  103. INT32 *g1, *g2, r;
  104. //
  105. // Compare 32 bits at a time
  106. //
  107. g1 = (INT32 *) Guid1;
  108. g2 = (INT32 *) Guid2;
  109. r = g1[0] - g2[0];
  110. r |= g1[1] - g2[1];
  111. r |= g1[2] - g2[2];
  112. r |= g1[3] - g2[3];
  113. return r;
  114. }