/** @file\r
Defines data types and constants introduced in UEFI.\r
\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved<BR>\r
+Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>\r
+\r
This program and the accompanying materials are licensed and made available under \r
the terms and conditions of the BSD License that accompanies this distribution. \r
The full text of the license may be found at\r
#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA\r
#define EFI_END_OF_FILE RETURN_END_OF_FILE\r
#define EFI_INVALID_LANGUAGE RETURN_INVALID_LANGUAGE\r
+#define EFI_COMPROMISED_DATA RETURN_COMPROMISED_DATA\r
+#define EFI_HTTP_ERROR RETURN_HTTP_ERROR\r
\r
#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH \r
#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE \r
#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE \r
#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL\r
+#define EFI_WARN_STALE_DATA RETURN_WARN_STALE_DATA\r
+#define EFI_WARN_FILE_SYSTEM RETURN_WARN_FILE_SYSTEM\r
///@}\r
\r
///\r
\r
//\r
// The EFI memory allocation functions work in units of EFI_PAGEs that are\r
-// 4K. This should in no way be confused with the page size of the processor.\r
+// 4KB. This should in no way be confused with the page size of the processor.\r
// An EFI_PAGE is just the quanta of memory in EFI.\r
//\r
-#define EFI_PAGE_SIZE 0x1000\r
+#define EFI_PAGE_SIZE SIZE_4KB\r
#define EFI_PAGE_MASK 0xFFF\r
#define EFI_PAGE_SHIFT 12\r
\r
-#define EFI_SIZE_TO_PAGES(a) (((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0))\r
+/**\r
+ Macro that converts a size, in bytes, to a number of EFI_PAGESs.\r
+\r
+ @param Size A size in bytes. This parameter is assumed to be type UINTN. \r
+ Passing in a parameter that is larger than UINTN may produce \r
+ unexpected results.\r
+\r
+ @return The number of EFI_PAGESs associated with the number of bytes specified\r
+ by Size.\r
+\r
+**/\r
+#define EFI_SIZE_TO_PAGES(Size) (((Size) >> EFI_PAGE_SHIFT) + (((Size) & EFI_PAGE_MASK) ? 1 : 0))\r
+\r
+/**\r
+ Macro that converts a number of EFI_PAGEs to a size in bytes.\r
\r
-#define EFI_PAGES_TO_SIZE(a) ( (a) << EFI_PAGE_SHIFT)\r
+ @param Pages The number of EFI_PAGES. This parameter is assumed to be \r
+ type UINTN. Passing in a parameter that is larger than \r
+ UINTN may produce unexpected results.\r
+\r
+ @return The number of bytes associated with the number of EFI_PAGEs specified \r
+ by Pages.\r
+ \r
+**/\r
+#define EFI_PAGES_TO_SIZE(Pages) ((Pages) << EFI_PAGE_SHIFT)\r
\r
///\r
/// PE32+ Machine type for IA32 UEFI images.\r
///\r
#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2\r
\r
+///\r
+/// PE32+ Machine type for AARCH64 A64 images.\r
+///\r
+#define EFI_IMAGE_MACHINE_AARCH64 0xAA64\r
+\r
\r
#if defined (MDE_CPU_IA32)\r
\r
\r
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) \r
\r
+#elif defined (MDE_CPU_AARCH64)\r
+\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+ (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)\r
+\r
#elif defined (MDE_CPU_EBC)\r
\r
///\r