Lines Matching +full:right +full:- +full:aligned
3 functions, file path functions, and CPU architecture-specific functions.
5 Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
6 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
10 SPDX-License-Identifier: BSD-2-Clause-Patent
18 // Definitions for architecture-specific types
22 /// The IA-32 architecture context buffer used by SetJump() and LongJump().
54 UINT8 XmmBuffer[160]; ///< XMM6-XMM15.
132 /// The RISC-V architecture context buffer used by SetJump() and LongJump().
161 Returns the length of a Null-terminated Unicode string.
165 If String is not aligned on a 16-bit boundary, then ASSERT().
167 @param String A pointer to a Null-terminated Unicode string.
184 Returns the size of a Null-terminated Unicode string in bytes, including the
187 This function returns the size of the Null-terminated Unicode string
190 If String is not aligned on a 16-bit boundary, then ASSERT().
192 @param String A pointer to a Null-terminated Unicode string.
200 @return The size of the Null-terminated Unicode string in bytes, including
217 If Destination is not aligned on a 16-bit boundary, then ASSERT().
218 If Source is not aligned on a 16-bit boundary, then ASSERT().
222 @param Destination A pointer to a Null-terminated Unicode string.
225 @param Source A pointer to a Null-terminated Unicode string.
252 If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
253 If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
257 @param Destination A pointer to a Null-terminated Unicode string.
260 @param Source A pointer to a Null-terminated Unicode string.
289 If Destination is not aligned on a 16-bit boundary, then ASSERT().
290 If Source is not aligned on a 16-bit boundary, then ASSERT().
294 @param Destination A pointer to a Null-terminated Unicode string.
297 @param Source A pointer to a Null-terminated Unicode string.
302 @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
328 If Destination is not aligned on a 16-bit boundary, then ASSERT().
329 If Source is not aligned on a 16-bit boundary, then ASSERT().
333 @param Destination A pointer to a Null-terminated Unicode string.
336 @param Source A pointer to a Null-terminated Unicode string.
342 @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
362 Convert a Null-terminated Unicode decimal string to a value of type UINTN.
370 The valid decimal digit character is in the range [0-9]. The function will
374 valid decimal character or a Null-terminator, whichever one comes first.
376 If String is not aligned in a 16-bit boundary, then ASSERT().
385 decimal digits right after the optional pad spaces, the value of String is
388 @param String Pointer to a Null-terminated Unicode string.
399 Null-terminator.
413 Convert a Null-terminated Unicode decimal string to a value of type UINT64.
421 The valid decimal digit character is in the range [0-9]. The function will
425 valid decimal character or a Null-terminator, whichever one comes first.
427 If String is not aligned in a 16-bit boundary, then ASSERT().
436 decimal digits right after the optional pad spaces, the value of String is
439 @param String Pointer to a Null-terminated Unicode string.
450 Null-terminator.
464 Convert a Null-terminated Unicode hexadecimal string to a value of type
473 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
483 If String is not aligned in a 16-bit boundary, then ASSERT().
492 hexadecimal digits right after the optional pad spaces, the value of String
495 @param String Pointer to a Null-terminated Unicode string.
506 Null-terminator.
520 Convert a Null-terminated Unicode hexadecimal string to a value of type
529 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
539 If String is not aligned in a 16-bit boundary, then ASSERT().
548 hexadecimal digits right after the optional pad spaces, the value of String
551 @param String Pointer to a Null-terminated Unicode string.
562 Null-terminator.
576 Returns the length of a Null-terminated Ascii string.
580 @param String A pointer to a Null-terminated Ascii string.
597 Returns the size of a Null-terminated Ascii string in bytes, including the
600 This function returns the size of the Null-terminated Ascii string specified
603 @param String A pointer to a Null-terminated Ascii string.
611 @return The size of the Null-terminated Ascii string in bytes, including the
630 @param Destination A pointer to a Null-terminated Ascii string.
633 @param Source A pointer to a Null-terminated Ascii string.
662 @param Destination A pointer to a Null-terminated Ascii string.
665 @param Source A pointer to a Null-terminated Ascii string.
696 @param Destination A pointer to a Null-terminated Ascii string.
699 @param Source A pointer to a Null-terminated Ascii string.
704 @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
732 @param Destination A pointer to a Null-terminated Ascii string.
735 @param Source A pointer to a Null-terminated Ascii string.
741 @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
761 Convert a Null-terminated Ascii decimal string to a value of type UINTN.
769 The valid decimal digit character is in the range [0-9]. The function will
773 valid decimal character or a Null-terminator, whichever one comes first.
782 decimal digits right after the optional pad spaces, the value of String is
785 @param String Pointer to a Null-terminated Ascii string.
796 Null-terminator.
810 Convert a Null-terminated Ascii decimal string to a value of type UINT64.
818 The valid decimal digit character is in the range [0-9]. The function will
822 valid decimal character or a Null-terminator, whichever one comes first.
831 decimal digits right after the optional pad spaces, the value of String is
834 @param String Pointer to a Null-terminated Ascii string.
845 Null-terminator.
859 Convert a Null-terminated Ascii hexadecimal string to a value of type UINTN.
867 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
874 character that is a not a valid hexadecimal character or Null-terminator,
884 hexadecimal digits right after the optional pad spaces, the value of String
887 @param String Pointer to a Null-terminated Ascii string.
898 Null-terminator.
912 Convert a Null-terminated Ascii hexadecimal string to a value of type UINT64.
920 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
927 character that is a not a valid hexadecimal character or Null-terminator,
937 hexadecimal digits right after the optional pad spaces, the value of String
940 @param String Pointer to a Null-terminated Ascii string.
951 Null-terminator.
970 Copies one Null-terminated Unicode string to another Null-terminated Unicode
978 If Destination is not aligned on a 16-bit boundary, then ASSERT().
980 If Source is not aligned on a 16-bit boundary, then ASSERT().
984 Null-terminator, then ASSERT().
986 @param Destination The pointer to a Null-terminated Unicode string.
987 @param Source The pointer to a Null-terminated Unicode string.
1003 Copies up to a specified length from one Null-terminated Unicode string to
1004 another Null-terminated Unicode string and returns the new Unicode string.
1015 If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
1017 If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
1022 PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
1025 @param Destination The pointer to a Null-terminated Unicode string.
1026 @param Source The pointer to a Null-terminated Unicode string.
1042 Returns the length of a Null-terminated Unicode string.
1044 This function returns the number of Unicode characters in the Null-terminated
1048 If String is not aligned on a 16-bit boundary, then ASSERT().
1051 Null-terminator, then ASSERT().
1053 @param String Pointer to a Null-terminated Unicode string.
1066 Returns the size of a Null-terminated Unicode string in bytes, including the
1069 This function returns the size, in bytes, of the Null-terminated Unicode string
1073 If String is not aligned on a 16-bit boundary, then ASSERT().
1076 Null-terminator, then ASSERT().
1078 @param String The pointer to a Null-terminated Unicode string.
1091 Compares two Null-terminated Unicode strings, and returns the difference
1094 This function compares the Null-terminated Unicode string FirstString to the
1095 Null-terminated Unicode string SecondString. If FirstString is identical to
1101 If FirstString is not aligned on a 16-bit boundary, then ASSERT().
1103 If SecondString is not aligned on a 16-bit boundary, then ASSERT().
1106 Null-terminator, then ASSERT().
1109 Null-terminator, then ASSERT().
1111 @param FirstString The pointer to a Null-terminated Unicode string.
1112 @param SecondString The pointer to a Null-terminated Unicode string.
1127 Compares up to a specified length the contents of two Null-terminated Unicode strings,
1130 This function compares the Null-terminated Unicode string FirstString to the
1131 Null-terminated Unicode string SecondString. At most, Length Unicode
1138 If Length > 0 and FirstString is not aligned on a 16-bit boundary, then ASSERT().
1140 If Length > 0 and SecondString is not aligned on a 16-bit boundary, then ASSERT().
1144 PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
1147 PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
1150 @param FirstString The pointer to a Null-terminated Unicode string.
1151 @param SecondString The pointer to a Null-terminated Unicode string.
1172 Concatenates one Null-terminated Unicode string to another Null-terminated
1175 This function concatenates two Null-terminated Unicode strings. The contents
1176 of Null-terminated Unicode string Source are concatenated to the end of
1177 Null-terminated Unicode string Destination. The Null-terminated concatenated
1182 If Destination is not aligned on a 16-bit boundary, then ASSERT().
1184 If Source is not aligned on a 16-bit boundary, then ASSERT().
1188 Null-terminator, then ASSERT().
1191 Null-terminator, then ASSERT().
1195 Null-terminator, then ASSERT().
1197 @param Destination The pointer to a Null-terminated Unicode string.
1198 @param Source The pointer to a Null-terminated Unicode string.
1214 Concatenates up to a specified length one Null-terminated Unicode to the end
1215 of another Null-terminated Unicode string, and returns the concatenated
1218 This function concatenates two Null-terminated Unicode strings. The contents
1219 of Null-terminated Unicode string Source are concatenated to the end of
1220 Null-terminated Unicode string Destination, and Destination is returned. At
1222 Destination, and Destination is always Null-terminated. If Length is 0, then
1227 If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
1229 If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
1235 Null-terminator, then ASSERT().
1238 Null-terminator, then ASSERT().
1241 Unicode characters, not including the Null-terminator, then ASSERT().
1243 @param Destination The pointer to a Null-terminated Unicode string.
1244 @param Source The pointer to a Null-terminated Unicode string.
1261 Returns the first occurrence of a Null-terminated Unicode sub-string
1262 in a Null-terminated Unicode string.
1264 This function scans the contents of the Null-terminated Unicode string
1270 If String is not aligned on a 16-bit boundary, then ASSERT().
1272 If SearchString is not aligned on a 16-bit boundary, then ASSERT().
1276 characters, not including the Null-terminator, then ASSERT().
1278 @param String The pointer to a Null-terminated Unicode string.
1279 @param SearchString The pointer to a Null-terminated Unicode string to search for.
1293 Convert a Null-terminated Unicode decimal string to a value of
1302 The valid decimal digit character is in the range [0-9]. The
1307 or a Null-terminator, whichever one comes first.
1310 If String is not aligned in a 16-bit boundary, then ASSERT().
1319 the Null-terminator, then ASSERT().
1321 @param String The pointer to a Null-terminated Unicode string.
1333 Convert a Null-terminated Unicode decimal string to a value of
1342 The valid decimal digit character is in the range [0-9]. The
1347 or a Null-terminator, whichever one comes first.
1350 If String is not aligned in a 16-bit boundary, then ASSERT().
1359 the Null-terminator, then ASSERT().
1361 @param String The pointer to a Null-terminated Unicode string.
1374 Convert a Null-terminated Unicode hexadecimal string to a value of type UINTN.
1382 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
1392 If String is not aligned in a 16-bit boundary, then ASSERT().
1400 PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator,
1403 @param String The pointer to a Null-terminated Unicode string.
1416 Convert a Null-terminated Unicode hexadecimal string to a value of type UINT64.
1424 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
1434 If String is not aligned in a 16-bit boundary, then ASSERT().
1442 PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator,
1445 @param String The pointer to a Null-terminated Unicode string.
1457 Convert a Null-terminated Unicode string to IPv6 address and prefix length.
1465 X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and
1466 [A-F]. X is converted to a value of type UINT16, whose low byte is stored in low
1468 digit characters in the range [0-9]. The running zero in the beginning of P will
1480 If String is not aligned in a 16-bit boundary, then ASSERT().
1486 @param String Pointer to a Null-terminated Unicode string.
1516 Convert a Null-terminated Unicode string to IPv4 address and prefix length.
1524 D and P are decimal digit characters in the range [0-9]. The running zero in
1533 If String is not aligned in a 16-bit boundary, then ASSERT().
1539 @param String Pointer to a Null-terminated Unicode string.
1568 Convert a Null-terminated Unicode GUID string to a value of type
1575 aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
1577 The pairs aa - pp are two characters in the range [0-9], [a-f] and
1578 [A-F], with each pair representing a single byte hexadecimal value.
1598 If String is not aligned in a 16-bit boundary, then ASSERT().
1600 @param String Pointer to a Null-terminated Unicode string.
1617 Convert a Null-terminated Unicode hexadecimal string to a byte array.
1625 X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F].
1630 If String is not aligned in a 16-bit boundary, then ASSERT().
1632 @param String Pointer to a Null-terminated Unicode string.
1646 digit characters, or a Null-terminator.
1663 Convert a Null-terminated Unicode string to a Null-terminated
1673 If any Unicode characters in Source contain non-zero value in
1678 If Source is not aligned on a 16-bit boundary, then ASSERT().
1683 the Null-terminator, then ASSERT().
1687 Null-terminator, then ASSERT().
1689 @param Source The pointer to a Null-terminated Unicode string.
1690 @param Destination The pointer to a Null-terminated ASCII string.
1705 Convert a Null-terminated Unicode string to a Null-terminated
1713 Destination by appending a Null-terminator character at the end.
1718 If any Unicode characters in Source contain non-zero value in
1721 If Source is not aligned on a 16-bit boundary, then ASSERT().
1725 @param Source The pointer to a Null-terminated Unicode string.
1726 @param Destination The pointer to a Null-terminated ASCII string.
1753 Convert not more than Length successive characters from a Null-terminated
1754 Unicode string to a Null-terminated Ascii string. If no null char is copied
1760 Destination by appending a Null-terminator character at the end.
1765 If any Unicode characters in Source contain non-zero value in the upper 8
1767 If Source is not aligned on a 16-bit boundary, then ASSERT().
1771 @param Source The pointer to a Null-terminated Unicode string.
1774 @param Destination The pointer to a Null-terminated Ascii string.
1810 Copies one Null-terminated ASCII string to another Null-terminated ASCII
1821 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
1824 @param Destination The pointer to a Null-terminated ASCII string.
1825 @param Source The pointer to a Null-terminated ASCII string.
1841 Copies up to a specified length one Null-terminated ASCII string to another
1842 Null-terminated ASCII string and returns the new ASCII string.
1857 PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
1860 @param Destination The pointer to a Null-terminated ASCII string.
1861 @param Source The pointer to a Null-terminated ASCII string.
1877 Returns the length of a Null-terminated ASCII string.
1879 This function returns the number of ASCII characters in the Null-terminated
1885 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
1888 @param String The pointer to a Null-terminated ASCII string.
1901 Returns the size of a Null-terminated ASCII string in bytes, including the
1904 This function returns the size, in bytes, of the Null-terminated ASCII string
1909 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
1912 @param String The pointer to a Null-terminated ASCII string.
1925 Compares two Null-terminated ASCII strings, and returns the difference
1928 This function compares the Null-terminated ASCII string FirstString to the
1929 Null-terminated ASCII string SecondString. If FirstString is identical to
1937 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
1941 Null-terminator, then ASSERT().
1943 @param FirstString The pointer to a Null-terminated ASCII string.
1944 @param SecondString The pointer to a Null-terminated ASCII string.
1959 Performs a case insensitive comparison of two Null-terminated ASCII strings,
1962 This function performs a case insensitive comparison of the Null-terminated
1963 ASCII string FirstString to the Null-terminated ASCII string SecondString. If
1972 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
1976 Null-terminator, then ASSERT().
1978 @param FirstString The pointer to a Null-terminated ASCII string.
1979 @param SecondString The pointer to a Null-terminated ASCII string.
1996 Compares two Null-terminated ASCII strings with maximum lengths, and returns
1999 This function compares the Null-terminated ASCII string FirstString to the
2000 Null-terminated ASCII string SecondString. At most, Length ASCII characters
2011 PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
2014 PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
2017 @param FirstString The pointer to a Null-terminated ASCII string.
2018 @param SecondString The pointer to a Null-terminated ASCII string.
2039 Concatenates one Null-terminated ASCII string to another Null-terminated
2042 This function concatenates two Null-terminated ASCII strings. The contents of
2043 Null-terminated ASCII string Source are concatenated to the end of Null-
2044 terminated ASCII string Destination. The Null-terminated concatenated ASCII
2050 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
2053 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
2059 @param Destination The pointer to a Null-terminated ASCII string.
2060 @param Source The pointer to a Null-terminated ASCII string.
2076 Concatenates up to a specified length one Null-terminated ASCII string to
2077 the end of another Null-terminated ASCII string, and returns the
2080 This function concatenates two Null-terminated ASCII strings. The contents
2081 of Null-terminated ASCII string Source are concatenated to the end of Null-
2084 Destination, and Destination is always Null-terminated. If Length is 0, then
2094 PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
2097 PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
2101 ASCII characters, not including the Null-terminator, then ASSERT().
2103 @param Destination The pointer to a Null-terminated ASCII string.
2104 @param Source The pointer to a Null-terminated ASCII string.
2121 Returns the first occurrence of a Null-terminated ASCII sub-string
2122 in a Null-terminated ASCII string.
2134 not including the Null-terminator, then ASSERT().
2136 @param String The pointer to a Null-terminated ASCII string.
2137 @param SearchString The pointer to a Null-terminated ASCII string to search for.
2153 Convert a Null-terminated ASCII decimal string to a value of type
2162 The valid decimal digit character is in the range [0-9]. The function will
2166 Null-terminator, whichever on comes first.
2174 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
2177 @param String The pointer to a Null-terminated ASCII string.
2190 Convert a Null-terminated ASCII decimal string to a value of type
2199 The valid decimal digit character is in the range [0-9]. The function will
2203 Null-terminator, whichever on comes first.
2211 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
2214 @param String The pointer to a Null-terminated ASCII string.
2227 Convert a Null-terminated ASCII hexadecimal string to a value of type UINTN.
2235 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
2242 hexadecimal character or Null-terminator, whichever on comes first.
2253 the Null-terminator, then ASSERT().
2255 @param String The pointer to a Null-terminated ASCII string.
2268 Convert a Null-terminated ASCII hexadecimal string to a value of type UINT64.
2276 The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
2283 hexadecimal character or Null-terminator, whichever on comes first.
2294 the Null-terminator, then ASSERT().
2296 @param String The pointer to a Null-terminated ASCII string.
2308 Convert a Null-terminated ASCII string to IPv6 address and prefix length.
2316 X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and
2317 [A-F]. X is converted to a value of type UINT16, whose low byte is stored in low
2319 digit characters in the range [0-9]. The running zero in the beginning of P will
2335 @param String Pointer to a Null-terminated ASCII string.
2365 Convert a Null-terminated ASCII string to IPv4 address and prefix length.
2373 D and P are decimal digit characters in the range [0-9]. The running zero in
2386 @param String Pointer to a Null-terminated ASCII string.
2413 Convert a Null-terminated ASCII GUID string to a value of type
2420 aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
2422 The pairs aa - pp are two characters in the range [0-9], [a-f] and
2423 [A-F], with each pair representing a single byte hexadecimal value.
2443 @param String Pointer to a Null-terminated ASCII string.
2460 Convert a Null-terminated ASCII hexadecimal string to a byte array.
2468 X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F].
2473 @param String Pointer to a Null-terminated ASCII string.
2487 digit characters, or a Null-terminator.
2504 Convert one Null-terminated ASCII string to a Null-terminated
2509 Unicode string Destination by appending a Null-terminator character at the end.
2514 If Destination is not aligned on a 16-bit boundary, then ASSERT().
2518 PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
2522 Null-terminator, then ASSERT().
2524 @param Source The pointer to a Null-terminated ASCII string.
2525 @param Destination The pointer to a Null-terminated Unicode string.
2540 Convert one Null-terminated ASCII string to a Null-terminated
2547 appending a Null-terminator character at the end.
2552 If Destination is not aligned on a 16-bit boundary, then ASSERT().
2556 @param Source The pointer to a Null-terminated ASCII string.
2557 @param Destination The pointer to a Null-terminated Unicode string.
2584 Convert not more than Length successive characters from a Null-terminated
2585 Ascii string to a Null-terminated Unicode string. If no null char is copied
2590 terminates the Unicode string Destination by appending a Null-terminator
2597 If Destination is not aligned on a 16-bit boundary, then ASSERT().
2602 @param Source The pointer to a Null-terminated Ascii string.
2604 @param Destination The pointer to a Null-terminated Unicode string.
2637 it maps to a valid small-case ASCII character.
2640 which maps to a valid small-case ASCII character, i.e.
2678 …Produce a Null-terminated Ascii string in the output buffer specified by Destination and Destinati…
2689 …D_PARAMETER If SourceLength or DestinationSize is bigger than (MAX_ADDRESS - (UINTN)Destination).
2704 Decode Base64 ASCII encoded data to 8-bit binary representation, based on
2710 - 0x09 ('\t') horizontal tab
2711 - 0x0A ('\n') new line
2712 - 0x0B ('\v') vertical tab
2713 - 0x0C ('\f') form feed
2714 - 0x0D ('\r') carriage return
2715 - 0x20 (' ') space
2730 8-bit binary representation. Allocated by the
2733 performed, but the 8-bit binary
2734 representation is not stored. If non-NULL and
2750 been decoded to on-output DestinationSize
2770 @retval RETURN_INVALID_PARAMETER Source is non-NULL, and (Source +
2773 @retval RETURN_INVALID_PARAMETER Destination is non-NULL, and (Destination +
2795 Converts an 8-bit value to an 8-bit BCD value.
2797 Converts the 8-bit value specified by Value to BCD. The BCD value is
2802 @param Value The 8-bit value to convert to BCD. Range 0..99.
2815 Converts an 8-bit BCD value to an 8-bit value.
2817 Converts the 8-bit BCD value specified by Value to an 8-bit value. The 8-bit
2823 @param Value The 8-bit BCD value to convert to an 8-bit value.
2825 @return The 8-bit value is returned.
2854 - Single periods in the path are removed.
2855 - Double periods in the path are removed along with a single parent directory.
2856 - Forward slashes L'/' are converted to backward slashes L'\'.
2899 for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink)
2915 for(Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink;\
2916 Entry != (ListHead); Entry = NextEntry, NextEntry = Entry->ForwardLink)
2919 Checks whether FirstEntry and SecondEntry are part of the same doubly-linked
2923 If FirstEntry->ForwardLink is NULL, then ASSERT().
2924 If FirstEntry->BackLink is NULL, then ASSERT().
2932 @retval TRUE SecondEntry is in the same doubly-linked list as FirstEntry.
2933 @retval FALSE SecondEntry isn't in the same doubly-linked list as FirstEntry,
3161 @retval TRUE Node is the head of the doubly-linked list pointed by List.
3162 @retval FALSE Node is not the head of the doubly-linked list pointed by List.
3270 Shifts a 64-bit integer left between 0 and 63 bits. The low bits are filled
3273 This function shifts the 64-bit value Operand to the left by Count bits. The
3278 @param Operand The 64-bit operand to shift left.
3293 Shifts a 64-bit integer right between 0 and 63 bits. This high bits are
3296 This function shifts the 64-bit value Operand to the right by Count bits. The
3301 @param Operand The 64-bit operand to shift right.
3302 @param Count The number of bits to shift right.
3316 Shifts a 64-bit integer right between 0 and 63 bits. The high bits are filled
3319 This function shifts the 64-bit value Operand to the right by Count bits. The
3324 @param Operand The 64-bit operand to shift right.
3325 @param Count The number of bits to shift right.
3339 Rotates a 32-bit integer left between 0 and 31 bits, filling the low bits
3342 This function rotates the 32-bit value Operand to the left by Count bits. The
3348 @param Operand The 32-bit operand to rotate left.
3363 Rotates a 32-bit integer right between 0 and 31 bits, filling the high bits
3366 This function rotates the 32-bit value Operand to the right by Count bits.
3372 @param Operand The 32-bit operand to rotate right.
3373 @param Count The number of bits to rotate right.
3387 Rotates a 64-bit integer left between 0 and 63 bits, filling the low bits
3390 This function rotates the 64-bit value Operand to the left by Count bits. The
3396 @param Operand The 64-bit operand to rotate left.
3411 Rotates a 64-bit integer right between 0 and 63 bits, filling the high bits
3414 This function rotates the 64-bit value Operand to the right by Count bits.
3420 @param Operand The 64-bit operand to rotate right.
3421 @param Count The number of bits to rotate right.
3435 Returns the bit position of the lowest bit set in a 32-bit value.
3437 This function computes the bit position of the lowest bit set in the 32-bit
3438 value specified by Operand. If Operand is zero, then -1 is returned.
3441 @param Operand The 32-bit operand to evaluate.
3444 @retval -1 Operand is zero.
3455 Returns the bit position of the lowest bit set in a 64-bit value.
3457 This function computes the bit position of the lowest bit set in the 64-bit
3458 value specified by Operand. If Operand is zero, then -1 is returned.
3461 @param Operand The 64-bit operand to evaluate.
3464 @retval -1 Operand is zero.
3476 Returns the bit position of the highest bit set in a 32-bit value. Equivalent
3479 This function computes the bit position of the highest bit set in the 32-bit
3480 value specified by Operand. If Operand is zero, then -1 is returned.
3483 @param Operand The 32-bit operand to evaluate.
3486 @retval -1 Operand is zero.
3497 Returns the bit position of the highest bit set in a 64-bit value. Equivalent
3500 This function computes the bit position of the highest bit set in the 64-bit
3501 value specified by Operand. If Operand is zero, then -1 is returned.
3504 @param Operand The 64-bit operand to evaluate.
3507 @retval -1 Operand is zero.
3518 Returns the value of the highest bit set in a 32-bit value. Equivalent to
3521 This function computes the value of the highest bit set in the 32-bit value
3524 @param Operand The 32-bit operand to evaluate.
3538 Returns the value of the highest bit set in a 64-bit value. Equivalent to
3541 This function computes the value of the highest bit set in the 64-bit value
3544 @param Operand The 64-bit operand to evaluate.
3558 Switches the endianness of a 16-bit integer.
3560 This function swaps the bytes in a 16-bit unsigned value to switch the value
3564 @param Value A 16-bit unsigned value.
3577 Switches the endianness of a 32-bit integer.
3579 This function swaps the bytes in a 32-bit unsigned value to switch the value
3583 @param Value A 32-bit unsigned value.
3596 Switches the endianness of a 64-bit integer.
3598 This function swaps the bytes in a 64-bit unsigned value to switch the value
3602 @param Value A 64-bit unsigned value.
3615 Multiples a 64-bit unsigned integer by a 32-bit unsigned integer and
3616 generates a 64-bit unsigned result.
3618 This function multiples the 64-bit unsigned value Multiplicand by the 32-bit
3619 unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
3622 @param Multiplicand A 64-bit unsigned value.
3623 @param Multiplier A 32-bit unsigned value.
3637 Multiples a 64-bit unsigned integer by a 64-bit unsigned integer and
3638 generates a 64-bit unsigned result.
3640 This function multiples the 64-bit unsigned value Multiplicand by the 64-bit
3641 unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
3644 @param Multiplicand A 64-bit unsigned value.
3645 @param Multiplier A 64-bit unsigned value.
3659 Multiples a 64-bit signed integer by a 64-bit signed integer and generates a
3660 64-bit signed result.
3662 This function multiples the 64-bit signed value Multiplicand by the 64-bit
3663 signed value Multiplier and generates a 64-bit signed result. This 64-bit
3666 @param Multiplicand A 64-bit signed value.
3667 @param Multiplier A 64-bit signed value.
3681 Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
3682 a 64-bit unsigned result.
3684 This function divides the 64-bit unsigned value Dividend by the 32-bit
3685 unsigned value Divisor and generates a 64-bit unsigned quotient. This
3686 function returns the 64-bit unsigned quotient.
3690 @param Dividend A 64-bit unsigned value.
3691 @param Divisor A 32-bit unsigned value.
3705 Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
3706 a 32-bit unsigned remainder.
3708 This function divides the 64-bit unsigned value Dividend by the 32-bit
3709 unsigned value Divisor and generates a 32-bit remainder. This function
3710 returns the 32-bit unsigned remainder.
3714 @param Dividend A 64-bit unsigned value.
3715 @param Divisor A 32-bit unsigned value.
3729 Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
3730 a 64-bit unsigned result and an optional 32-bit unsigned remainder.
3732 This function divides the 64-bit unsigned value Dividend by the 32-bit
3733 unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
3734 is not NULL, then the 32-bit unsigned remainder is returned in Remainder.
3735 This function returns the 64-bit unsigned quotient.
3739 @param Dividend A 64-bit unsigned value.
3740 @param Divisor A 32-bit unsigned value.
3741 @param Remainder A pointer to a 32-bit unsigned value. This parameter is
3757 Divides a 64-bit unsigned integer by a 64-bit unsigned integer and generates
3758 a 64-bit unsigned result and an optional 64-bit unsigned remainder.
3760 This function divides the 64-bit unsigned value Dividend by the 64-bit
3761 unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
3762 is not NULL, then the 64-bit unsigned remainder is returned in Remainder.
3763 This function returns the 64-bit unsigned quotient.
3767 @param Dividend A 64-bit unsigned value.
3768 @param Divisor A 64-bit unsigned value.
3769 @param Remainder A pointer to a 64-bit unsigned value. This parameter is
3785 Divides a 64-bit signed integer by a 64-bit signed integer and generates a
3786 64-bit signed result and a optional 64-bit signed remainder.
3788 This function divides the 64-bit signed value Dividend by the 64-bit signed
3789 value Divisor and generates a 64-bit signed quotient. If Remainder is not
3790 NULL, then the 64-bit signed remainder is returned in Remainder. This
3791 function returns the 64-bit signed quotient.
3799 @param Dividend A 64-bit signed value.
3800 @param Divisor A 64-bit signed value.
3801 @param Remainder A pointer to a 64-bit signed value. This parameter is
3817 Reads a 16-bit value from memory that may be unaligned.
3819 This function returns the 16-bit value pointed to by Buffer. The function
3824 @param Buffer The pointer to a 16-bit value that may be unaligned.
3826 @return The 16-bit value read from Buffer.
3837 Writes a 16-bit value to memory that may be unaligned.
3839 This function writes the 16-bit value specified by Value to Buffer. Value is
3845 @param Buffer The pointer to a 16-bit value that may be unaligned.
3846 @param Value 16-bit value to write to Buffer.
3848 @return The 16-bit value to write to Buffer.
3860 Reads a 24-bit value from memory that may be unaligned.
3862 This function returns the 24-bit value pointed to by Buffer. The function
3867 @param Buffer The pointer to a 24-bit value that may be unaligned.
3869 @return The 24-bit value read from Buffer.
3880 Writes a 24-bit value to memory that may be unaligned.
3882 This function writes the 24-bit value specified by Value to Buffer. Value is
3888 @param Buffer The pointer to a 24-bit value that may be unaligned.
3889 @param Value 24-bit value to write to Buffer.
3891 @return The 24-bit value to write to Buffer.
3903 Reads a 32-bit value from memory that may be unaligned.
3905 This function returns the 32-bit value pointed to by Buffer. The function
3910 @param Buffer The pointer to a 32-bit value that may be unaligned.
3912 @return The 32-bit value read from Buffer.
3923 Writes a 32-bit value to memory that may be unaligned.
3925 This function writes the 32-bit value specified by Value to Buffer. Value is
3931 @param Buffer The pointer to a 32-bit value that may be unaligned.
3932 @param Value 32-bit value to write to Buffer.
3934 @return The 32-bit value to write to Buffer.
3946 Reads a 64-bit value from memory that may be unaligned.
3948 This function returns the 64-bit value pointed to by Buffer. The function
3953 @param Buffer The pointer to a 64-bit value that may be unaligned.
3955 @return The 64-bit value read from Buffer.
3966 Writes a 64-bit value to memory that may be unaligned.
3968 This function writes the 64-bit value specified by Value to Buffer. Value is
3974 @param Buffer The pointer to a 64-bit value that may be unaligned.
3975 @param Value 64-bit value to write to Buffer.
3977 @return The 64-bit value to write to Buffer.
3993 Returns a bit field from an 8-bit value.
3997 If 8-bit operations are not supported, then ASSERT().
4021 Writes a bit field to an 8-bit value, and returns the result.
4024 Operand. All other bits in Operand are preserved. The new 8-bit value is
4027 If 8-bit operations are not supported, then ASSERT().
4040 @return The new 8-bit value.
4054 Reads a bit field from an 8-bit value, performs a bitwise OR, and returns the
4059 Operand are preserved. The new 8-bit value is returned.
4061 If 8-bit operations are not supported, then ASSERT().
4074 @return The new 8-bit value.
4088 Reads a bit field from an 8-bit value, performs a bitwise AND, and returns
4093 preserved. The new 8-bit value is returned.
4095 If 8-bit operations are not supported, then ASSERT().
4108 @return The new 8-bit value.
4122 Reads a bit field from an 8-bit value, performs a bitwise AND followed by a
4128 preserved. The new 8-bit value is returned.
4130 If 8-bit operations are not supported, then ASSERT().
4145 @return The new 8-bit value.
4160 Returns a bit field from a 16-bit value.
4164 If 16-bit operations are not supported, then ASSERT().
4188 Writes a bit field to a 16-bit value, and returns the result.
4191 Operand. All other bits in Operand are preserved. The new 16-bit value is
4194 If 16-bit operations are not supported, then ASSERT().
4207 @return The new 16-bit value.
4221 Reads a bit field from a 16-bit value, performs a bitwise OR, and returns the
4226 Operand are preserved. The new 16-bit value is returned.
4228 If 16-bit operations are not supported, then ASSERT().
4241 @return The new 16-bit value.
4255 Reads a bit field from a 16-bit value, performs a bitwise AND, and returns
4260 preserved. The new 16-bit value is returned.
4262 If 16-bit operations are not supported, then ASSERT().
4275 @return The new 16-bit value.
4289 Reads a bit field from a 16-bit value, performs a bitwise AND followed by a
4295 preserved. The new 16-bit value is returned.
4297 If 16-bit operations are not supported, then ASSERT().
4312 @return The new 16-bit value.
4327 Returns a bit field from a 32-bit value.
4331 If 32-bit operations are not supported, then ASSERT().
4355 Writes a bit field to a 32-bit value, and returns the result.
4358 Operand. All other bits in Operand are preserved. The new 32-bit value is
4361 If 32-bit operations are not supported, then ASSERT().
4374 @return The new 32-bit value.
4388 Reads a bit field from a 32-bit value, performs a bitwise OR, and returns the
4393 Operand are preserved. The new 32-bit value is returned.
4395 If 32-bit operations are not supported, then ASSERT().
4408 @return The new 32-bit value.
4422 Reads a bit field from a 32-bit value, performs a bitwise AND, and returns
4427 preserved. The new 32-bit value is returned.
4429 If 32-bit operations are not supported, then ASSERT().
4442 @return The new 32-bit value.
4456 Reads a bit field from a 32-bit value, performs a bitwise AND followed by a
4462 preserved. The new 32-bit value is returned.
4464 If 32-bit operations are not supported, then ASSERT().
4479 @return The new 32-bit value.
4494 Returns a bit field from a 64-bit value.
4498 If 64-bit operations are not supported, then ASSERT().
4522 Writes a bit field to a 64-bit value, and returns the result.
4525 Operand. All other bits in Operand are preserved. The new 64-bit value is
4528 If 64-bit operations are not supported, then ASSERT().
4541 @return The new 64-bit value.
4555 Reads a bit field from a 64-bit value, performs a bitwise OR, and returns the
4560 Operand are preserved. The new 64-bit value is returned.
4562 If 64-bit operations are not supported, then ASSERT().
4575 @return The new 64-bit value.
4589 Reads a bit field from a 64-bit value, performs a bitwise AND, and returns
4594 preserved. The new 64-bit value is returned.
4596 If 64-bit operations are not supported, then ASSERT().
4609 @return The new 64-bit value.
4623 Reads a bit field from a 64-bit value, performs a bitwise AND followed by a
4629 preserved. The new 64-bit value is returned.
4631 If 64-bit operations are not supported, then ASSERT().
4646 @return The new 64-bit value.
4660 Reads a bit field from a 32-bit value, counts and returns
4688 Reads a bit field from a 64-bit value, counts and returns
4729 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4747 of 8-bit values.
4749 This function first calculates the sum of the 8-bit values in the
4755 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4772 Returns the sum of all elements in a buffer of 16-bit values. During
4775 This function calculates the sum of the 16-bit values in the buffer
4777 The 16-bit result is returned. If Length is 0, then 0 is returned.
4780 If Buffer is not aligned on a 16-bit boundary, then ASSERT().
4781 If Length is not aligned on a 16-bit boundary, then ASSERT().
4782 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4800 16-bit values.
4802 This function first calculates the sum of the 16-bit values in the buffer
4808 If Buffer is not aligned on a 16-bit boundary, then ASSERT().
4809 If Length is not aligned on a 16-bit boundary, then ASSERT().
4810 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4827 Returns the sum of all elements in a buffer of 32-bit values. During
4830 This function calculates the sum of the 32-bit values in the buffer
4832 The 32-bit result is returned. If Length is 0, then 0 is returned.
4835 If Buffer is not aligned on a 32-bit boundary, then ASSERT().
4836 If Length is not aligned on a 32-bit boundary, then ASSERT().
4837 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4855 32-bit values.
4857 This function first calculates the sum of the 32-bit values in the buffer
4863 If Buffer is not aligned on a 32-bit boundary, then ASSERT().
4864 If Length is not aligned on a 32-bit boundary, then ASSERT().
4865 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4882 Returns the sum of all elements in a buffer of 64-bit values. During
4885 This function calculates the sum of the 64-bit values in the buffer
4887 The 64-bit result is returned. If Length is 0, then 0 is returned.
4890 If Buffer is not aligned on a 64-bit boundary, then ASSERT().
4891 If Length is not aligned on a 64-bit boundary, then ASSERT().
4892 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4910 64-bit values.
4912 This function first calculates the sum of the 64-bit values in the buffer
4918 If Buffer is not aligned on a 64-bit boundary, then ASSERT().
4919 If Length is not aligned on a 64-bit boundary, then ASSERT().
4920 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4936 Computes and returns a 32-bit CRC for a data buffer.
4937 CRC32 value bases on ITU-T V.42.
4940 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
4942 @param[in] Buffer A pointer to the buffer on which the 32-bit CRC is to be computed.
4945 @retval Crc32 The 32-bit CRC was computed for the data buffer.
4994 calls to LongJump() cause a non-zero value to be returned by SetJump().
4997 For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
5001 …For example, a BASE_LIBRARY_JUMP_BUFFER allocated by an IA-32 module must never be used from an x6…
5025 For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
5030 restored and must be non-zero.
5150 These additional arguments are ignored on IA-32, x64, and EBC architectures.
5164 @param ... This variable argument list is ignored for IA-32, x64, and
5229 /// Byte packed structure for 16-bit Real Mode EFLAGS.
5254 /// 32-bits on IA-32.
5255 /// 64-bits on x64. The upper 32-bits on x64 are reserved.
5287 /// 32-bits on IA-32.
5288 /// 64-bits on x64. The upper 32-bits on x64 are reserved.
5303 UINT32 NW:1; ///< Mot Write-through.
5312 /// 32-bits on IA-32.
5313 /// 64-bits on x64. The upper 32-bits on x64 are reserved.
5317 UINT32 VME:1; ///< Virtual-8086 Mode Extensions.
5318 UINT32 PVI:1; ///< Protected-Mode Virtual Interrupts.
5332 UINT32 UMIP:1; ///< User-Mode Instruction Prevention.
5343 UINT32 PKE:1; ///< Protection-Key Enable.
5392 /// Byte packed structure for an IA-32 Interrupt Gate Descriptor.
5407 // IA32 Task-State Segment Definition
5493 // IA32 Task-State Segment Definition
5541 /// Structures for the 16-bit real mode thunks.
5607 /// Byte packed structure for an 16-bit real mode thunks.
5625 /// pointer-to-function type), such labels in NASM source code never stand for
5629 /// edk2 coding style for function (or pointer-to-function) typedefs. The VOID
5643 This function is only available on IA-32 and x64.
5645 @param Index The 32-bit value to load into EAX prior to invoking the CPUID
5647 @param Eax The pointer to the 32-bit EAX value returned by the CPUID
5649 @param Ebx The pointer to the 32-bit EBX value returned by the CPUID
5651 @param Ecx The pointer to the 32-bit ECX value returned by the CPUID
5653 @param Edx The pointer to the 32-bit EDX value returned by the CPUID
5675 Index. This function is only available on IA-32 and x64.
5682 @param Index The 32-bit value to load into EAX prior to invoking the
5684 @param SubIndex The 32-bit value to load into ECX prior to invoking the
5686 @param Eax The pointer to the 32-bit EAX value returned by the CPUID
5689 @param Ebx The pointer to the 32-bit EBX value returned by the CPUID
5692 @param Ecx The pointer to the 32-bit ECX value returned by the CPUID
5695 @param Edx The pointer to the 32-bit EDX value returned by the CPUID
5718 and executing a WBINVD instruction. This function is only available on IA-32 and x64.
5732 bits of CR0 to 0. This function is only available on IA-32 and x64.
5743 Returns the lower 32-bits of a Machine Specific Register(MSR).
5745 Reads and returns the lower 32-bits of the MSR specified by Index.
5749 is only available on IA-32 and x64.
5751 @param Index The 32-bit MSR index to read.
5764 Writes a 32-bit value to a Machine Specific Register(MSR), and returns the value.
5765 The upper 32-bits of the MSR are set to zero.
5767 Writes the 32-bit value specified by Value to the MSR specified by Index. The
5768 upper 32-bits of the MSR write are set to zero. The 32-bit value written to
5772 handlers. This function is only available on IA-32 and x64.
5774 @param Index The 32-bit MSR index to write.
5775 @param Value The 32-bit value to write to the MSR.
5789 Reads a 64-bit MSR, performs a bitwise OR on the lower 32-bits, and
5790 writes the result back to the 64-bit MSR.
5792 Reads the 64-bit MSR specified by Index, performs a bitwise OR
5793 between the lower 32-bits of the read result and the value specified by
5794 OrData, and writes the result to the 64-bit MSR specified by Index. The lower
5795 32-bits of the value written to the MSR is returned. No parameter checking is
5799 IA-32 and x64.
5801 @param Index The 32-bit MSR index to write.
5804 @return The lower 32-bit value written to the MSR.
5816 Reads a 64-bit MSR, performs a bitwise AND on the lower 32-bits, and writes
5817 the result back to the 64-bit MSR.
5819 Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
5820 lower 32-bits of the read result and the value specified by AndData, and
5821 writes the result to the 64-bit MSR specified by Index. The lower 32-bits of
5825 establish proper exception handlers. This function is only available on IA-32
5828 @param Index The 32-bit MSR index to write.
5831 @return The lower 32-bit value written to the MSR.
5843 Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise OR
5844 on the lower 32-bits, and writes the result back to the 64-bit MSR.
5846 Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
5847 lower 32-bits of the read result and the value specified by AndData
5848 preserving the upper 32-bits, performs a bitwise OR between the
5850 result to the 64-bit MSR specified by Address. The lower 32-bits of the value
5855 available on IA-32 and x64.
5857 @param Index The 32-bit MSR index to write.
5861 @return The lower 32-bit value written to the MSR.
5876 Reads the bit field in the lower 32-bits of a 64-bit MSR. The bit field is
5880 available on IA-32 and x64.
5886 @param Index The 32-bit MSR index to read.
5907 Writes Value to a bit field in the lower 32-bits of a 64-bit MSR. The bit
5909 destination MSR are preserved. The lower 32-bits of the MSR written is
5912 This function is only available on IA-32 and x64.
5919 @param Index The 32-bit MSR index to write.
5926 @return The lower 32-bit of the value written to the MSR.
5940 Reads a bit field in a 64-bit MSR, performs a bitwise OR, and writes the
5941 result back to the bit field in the 64-bit MSR.
5943 Reads the 64-bit MSR specified by Index, performs a bitwise OR
5945 result to the 64-bit MSR specified by Index. The lower 32-bits of the value
5949 function is only available on IA-32 and x64.
5956 @param Index The 32-bit MSR index to write.
5963 @return The lower 32-bit of the value written to the MSR.
5977 Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
5978 result back to the bit field in the 64-bit MSR.
5980 Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
5982 64-bit MSR specified by Index. The lower 32-bits of the value written to the
5986 available on IA-32 and x64.
5993 @param Index The 32-bit MSR index to write.
6000 @return The lower 32-bit of the value written to the MSR.
6014 Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
6016 64-bit MSR.
6018 Reads the 64-bit MSR specified by Index, performs a bitwise AND followed by a
6020 AndData, and writes the result to the 64-bit MSR specified by Index. The
6021 lower 32-bits of the value written to the MSR are returned. Extra left bits
6024 handlers to catch the exceptions. This function is only available on IA-32
6033 @param Index The 32-bit MSR index to write.
6041 @return The lower 32-bit of the value written to the MSR.
6056 Returns a 64-bit Machine Specific Register(MSR).
6058 Reads and returns the 64-bit MSR specified by Index. No parameter checking is
6062 on IA-32 and x64.
6064 @param Index The 32-bit MSR index to read.
6077 Writes a 64-bit value to a Machine Specific Register(MSR), and returns the
6080 Writes the 64-bit value specified by Value to the MSR specified by Index. The
6081 64-bit value written to the MSR is returned. No parameter checking is
6085 IA-32 and x64.
6087 @param Index The 32-bit MSR index to write.
6088 @param Value The 64-bit value to write to the MSR.
6102 Reads a 64-bit MSR, performs a bitwise OR, and writes the result
6103 back to the 64-bit MSR.
6105 Reads the 64-bit MSR specified by Index, performs a bitwise OR
6107 result to the 64-bit MSR specified by Index. The value written to the MSR is
6111 This function is only available on IA-32 and x64.
6113 @param Index The 32-bit MSR index to write.
6128 Reads a 64-bit MSR, performs a bitwise AND, and writes the result back to the
6129 64-bit MSR.
6131 Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
6133 64-bit MSR specified by Index. The value written to the MSR is returned. No
6137 function is only available on IA-32 and x64.
6139 @param Index The 32-bit MSR index to write.
6154 Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise
6155 OR, and writes the result back to the 64-bit MSR.
6157 Reads the 64-bit MSR specified by Index, performs a bitwise AND between read
6160 and writes the result to the 64-bit MSR specified by Index. The value written
6164 establish proper exception handlers. This function is only available on IA-32
6167 @param Index The 32-bit MSR index to write.
6186 Reads the bit field in the 64-bit MSR. The bit field is specified by the
6190 on IA-32 and x64.
6196 @param Index The 32-bit MSR index to read.
6217 Writes Value to a bit field in a 64-bit MSR. The bit field is specified by
6221 handlers to catch the exceptions. This function is only available on IA-32 and x64.
6228 @param Index The 32-bit MSR index to write.
6249 Reads a bit field in a 64-bit MSR, performs a bitwise OR, and
6250 writes the result back to the bit field in the 64-bit MSR.
6252 Reads the 64-bit MSR specified by Index, performs a bitwise OR
6254 result to the 64-bit MSR specified by Index. The value written to the MSR is
6258 on IA-32 and x64.
6265 @param Index The 32-bit MSR index to write.
6286 Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
6287 result back to the bit field in the 64-bit MSR.
6289 Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
6291 64-bit MSR specified by Index. The value written to the MSR is returned.
6294 handlers to catch the exceptions. This function is only available on IA-32
6302 @param Index The 32-bit MSR index to write.
6323 Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
6325 64-bit MSR.
6327 Reads the 64-bit MSR specified by Index, performs a bitwise AND followed by
6329 AndData, and writes the result to the 64-bit MSR specified by Index. The
6333 exceptions. This function is only available on IA-32 and x64.
6341 @param Index The 32-bit MSR index to write.
6367 only available on IA-32 and x64. This returns a 32-bit value on IA-32 and a
6368 64-bit value on x64.
6370 @return EFLAGS on IA-32 or RFLAGS on x64.
6384 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6401 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6418 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6435 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6452 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6470 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6488 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6506 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6524 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6541 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6558 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6575 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6592 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6609 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6626 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6643 on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
6660 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6678 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6696 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6714 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6732 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6750 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6768 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6786 IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
6804 IA-32 and x64.
6820 IA-32 and x64.
6836 IA-32 and x64.
6852 IA-32 and x64.
6868 IA-32 and x64.
6884 IA-32 and x64.
6900 IA-32 and x64.
6916 function is only available on IA-32 and x64.
6934 only available on IA-32 and x64.
6952 function is only available on IA-32 and x64.
6970 only available on IA-32 and x64.
6987 Reads and returns the current 16-bit LDTR descriptor value. This function is
6988 only available on IA-32 and x64.
7004 only available on IA-32 and x64.
7006 @param Ldtr 16-bit LDTR selector value.
7020 Buffer. Buffer must be aligned on a 16-byte boundary. This function is only
7021 available on IA-32 and x64.
7024 If Buffer is not aligned on a 16-byte boundary, then ASSERT().
7040 by Buffer. Buffer must be aligned on a 16-byte boundary. This function is
7041 only available on IA-32 and x64.
7044 If Buffer is not aligned on a 16-byte boundary, then ASSERT().
7058 Reads the current value of 64-bit MMX Register #0 (MM0).
7061 on IA-32 and x64.
7074 Reads the current value of 64-bit MMX Register #1 (MM1).
7077 on IA-32 and x64.
7090 Reads the current value of 64-bit MMX Register #2 (MM2).
7093 on IA-32 and x64.
7106 Reads the current value of 64-bit MMX Register #3 (MM3).
7109 on IA-32 and x64.
7122 Reads the current value of 64-bit MMX Register #4 (MM4).
7125 on IA-32 and x64.
7138 Reads the current value of 64-bit MMX Register #5 (MM5).
7141 on IA-32 and x64.
7154 Reads the current value of 64-bit MMX Register #6 (MM6).
7157 on IA-32 and x64.
7170 Reads the current value of 64-bit MMX Register #7 (MM7).
7173 on IA-32 and x64.
7186 Writes the current value of 64-bit MMX Register #0 (MM0).
7191 @param Value The 64-bit value to write to MM0.
7202 Writes the current value of 64-bit MMX Register #1 (MM1).
7207 @param Value The 64-bit value to write to MM1.
7218 Writes the current value of 64-bit MMX Register #2 (MM2).
7223 @param Value The 64-bit value to write to MM2.
7234 Writes the current value of 64-bit MMX Register #3 (MM3).
7239 @param Value The 64-bit value to write to MM3.
7250 Writes the current value of 64-bit MMX Register #4 (MM4).
7255 @param Value The 64-bit value to write to MM4.
7266 Writes the current value of 64-bit MMX Register #5 (MM5).
7271 @param Value The 64-bit value to write to MM5.
7282 Writes the current value of 64-bit MMX Register #6 (MM6).
7287 @param Value The 64-bit value to write to MM6.
7298 Writes the current value of 64-bit MMX Register #7 (MM7).
7303 @param Value The 64-bit value to write to MM7.
7317 on IA-32 and x64.
7333 Index. This function is only available on IA-32 and x64.
7335 @param Index The 32-bit Performance Counter index to read.
7351 and Edx. Returns Eax. This function is only available on IA-32 and x64.
7376 Ecx. Returns Eax. This function is only available on IA-32 and x64.
7397 Executes a WBINVD instruction. This function is only available on IA-32 and
7411 Executes a INVD instruction. This function is only available on IA-32 and
7427 This function is only available on IA-32 and x64.
7445 Enables the 32-bit paging mode on the CPU.
7447 Enables the 32-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
7449 assumes the current execution mode is 32-bit protected mode. This function is
7450 only available on IA-32. After the 32-bit paging mode is enabled, control is
7456 If the current execution mode is not 32-bit protected mode, then ASSERT().
7463 2) The caller must be in 32-bit protected mode with flat descriptors. This
7465 3) CR0 and CR4 must be compatible with 32-bit protected mode with flat
7492 Disables the 32-bit paging mode on the CPU.
7494 Disables the 32-bit paging mode on the CPU and returns to 32-bit protected
7495 mode. This function assumes the current execution mode is 32-paged protected
7496 mode. This function is only available on IA-32. After the 32-bit paging mode
7502 If the current execution mode is not 32-bit paged mode, then ASSERT().
7509 2) The caller must be in 32-bit paged mode.
7510 3) CR0, CR3, and CR4 must be compatible with 32-bit paged mode.
7536 Enables the 64-bit paging mode on the CPU.
7538 Enables the 64-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
7540 assumes the current execution mode is 32-bit protected mode with flat
7541 descriptors. This function is only available on IA-32. After the 64-bit
7547 If the current execution mode is not 32-bit protected mode with flat
7552 @param Cs The 16-bit selector to load in the CS before EntryPoint
7555 @param EntryPoint The 64-bit virtual address of the function to call with
7557 @param Context1 The 64-bit virtual address of the context to pass into
7560 @param Context2 The 64-bit virtual address of the context to pass into
7563 @param NewStack The 64-bit virtual address of the new stack to use for
7579 Disables the 64-bit paging mode on the CPU.
7581 Disables the 64-bit paging mode on the CPU and returns to 32-bit protected
7582 mode. This function assumes the current execution mode is 64-paging mode.
7583 This function is only available on x64. After the 64-bit paging mode is
7589 If the current execution mode is not 64-bit paged mode, then ASSERT().
7593 @param Cs The 16-bit selector to load in the CS before EntryPoint
7595 references must be setup for 32-bit protected mode.
7596 @param EntryPoint The 64-bit virtual address of the function to call with
7598 @param Context1 The 64-bit virtual address of the context to pass into
7601 @param Context2 The 64-bit virtual address of the context to pass into
7604 @param NewStack The 64-bit virtual address of the new stack to use for
7620 // 16-bit thunking services
7624 Retrieves the properties for 16-bit thunk functions.
7629 in ExtraStackSize. If parameters are passed to the 16-bit real mode code,
7631 of bytes that need to be passed to the 16-bit real mode code.
7637 required to use the 16-bit thunk functions.
7639 that the 16-bit thunk functions require for
7641 16-bit real mode.
7663 16-bit real mode code to call.
7674 Transfers control to a 16-bit real mode entry point and returns the results.
7676 Transfers control to a 16-bit real mode entry point and returns the results.
7681 to calling the 16-bit real mode entry point. This includes the EFLAGS field of RealModeState,
7682 which is used to set the interrupt state when a 16-bit real mode entry point is called.
7683 …Control is transferred to the 16-bit real mode entry point specified by the CS and Eip fields of R…
7685 …the 16-bit real mode code must be populated by the caller at SS:ESP prior to calling this function.
7686 The 16-bit real mode entry point is invoked with a 16-bit CALL FAR instruction,
7687 so when accessing stack contents, the 16-bit real mode code must account for the 16-bit segment
7688 …and 16-bit offset of the return address that were pushed onto the stack. The 16-bit real mode entry
7692 If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
7693 …or any of the 16-bit real mode code makes a SW interrupt, then the caller is responsible for makin…
7694 …the IDT at address 0 is initialized to handle any HW or SW interrupts that may occur while in 16-b…
7696 If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
7697 …then the caller is responsible for making sure the 8259 PIC is in a state compatible with 16-bit r…
7701 …is invoked in big real mode. Otherwise, the user code is invoked in 16-bit real mode with 64KB se…
7723 16-bit real mode code to call.
7734 Prepares all structures and code for a 16-bit real mode thunk, transfers
7735 control to a 16-bit real mode entry point, and returns the results.
7737 Prepares all structures and code for a 16-bit real mode thunk, transfers
7738 control to a 16-bit real mode entry point, and returns the results. If the
7739 caller only need to perform a single 16-bit real mode thunk, then this
7740 service should be used. If the caller intends to make more than one 16-bit
7742 once and AsmThunk16() can be called for each 16-bit real mode thunk.
7750 16-bit real mode code to call.
7760 Generates a 16-bit random number through RDRAND instruction.
7777 Generates a 32-bit random number through RDRAND instruction.
7794 Generates a 64-bit random number through RDRAND instruction.
7822 Performs a serializing operation on all load-from-memory instructions that
7825 Executes a LFENCE instruction. This function is only available on IA-32 and x64.
7853 @param[out] InstructionEnd Pointer right past the instruction to patch. The