efirtlib.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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 VOID *Src,
  53. IN UINTN len
  54. )
  55. {
  56. CHAR8 *d, *s;
  57. d = Dest;
  58. s = Src;
  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 VOID *Dest,
  70. IN VOID *Src,
  71. IN UINTN len
  72. )
  73. {
  74. CHAR8 *d, *s;
  75. d = Dest;
  76. s = Src;
  77. while (len--) {
  78. if (*d != *s) {
  79. return *d - *s;
  80. }
  81. d += 1;
  82. s += 1;
  83. }
  84. return 0;
  85. }
  86. #ifndef __GNUC__
  87. #pragma RUNTIME_CODE(RtCompareGuid)
  88. #endif
  89. INTN
  90. RUNTIMEFUNCTION
  91. RtCompareGuid (
  92. IN EFI_GUID *Guid1,
  93. IN EFI_GUID *Guid2
  94. )
  95. /*++
  96. Routine Description:
  97. Compares to GUIDs
  98. Arguments:
  99. Guid1 - guid to compare
  100. Guid2 - guid to compare
  101. Returns:
  102. = 0 if Guid1 == Guid2
  103. --*/
  104. {
  105. INT32 *g1, *g2, r;
  106. //
  107. // Compare 32 bits at a time
  108. //
  109. g1 = (INT32 *) Guid1;
  110. g2 = (INT32 *) Guid2;
  111. r = g1[0] - g2[0];
  112. r |= g1[1] - g2[1];
  113. r |= g1[2] - g2[2];
  114. r |= g1[3] - g2[3];
  115. return r;
  116. }