/** @file\r
Defines data types and constants introduced in UEFI.\r
\r
- Copyright (c) 2006 - 2008, Intel Corporation\r
+ Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
+ Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
\r
///\r
/// EFI Time Abstraction:\r
-/// Year: 1998 - 20XX\r
+/// Year: 1900 - 9999\r
/// Month: 1 - 12\r
/// Day: 1 - 31\r
/// Hour: 0 - 23\r
} EFI_IP_ADDRESS;\r
\r
\r
-//\r
-// Enumeration of EFI_STATUS.\r
-// \r
+///\r
+/// Enumeration of EFI_STATUS.\r
+///@{ \r
#define EFI_SUCCESS RETURN_SUCCESS \r
#define EFI_LOAD_ERROR RETURN_LOAD_ERROR \r
#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER \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
+///@}\r
\r
-\r
-//\r
-// Define macro to encode the status code.\r
-// \r
+///\r
+/// Define macro to encode the status code.\r
+/// \r
#define EFIERR(_a) ENCODE_ERROR(_a)\r
\r
#define EFI_ERROR(A) RETURN_ERROR(A)\r
\r
+///\r
+/// ICMP error definitions\r
+///@{\r
+#define EFI_NETWORK_UNREACHABLE EFIERR(100)\r
+#define EFI_HOST_UNREACHABLE EFIERR(101) \r
+#define EFI_PROTOCOL_UNREACHABLE EFIERR(102)\r
+#define EFI_PORT_UNREACHABLE EFIERR(103)\r
+///@}\r
\r
+///\r
+/// Tcp connection status definitions\r
+///@{\r
+#define EFI_CONNECTION_FIN EFIERR(104)\r
+#define EFI_CONNECTION_RESET EFIERR(105)\r
+#define EFI_CONNECTION_REFUSED EFIERR(106)\r
+///@}\r
\r
//\r
// The EFI memory allocation functions work in units of EFI_PAGEs that are\r
///\r
/// PE32+ Machine type for IA32 UEFI images\r
///\r
-#define EFI_IMAGE_MACHINE_IA32 0x014C\r
+#define EFI_IMAGE_MACHINE_IA32 0x014C\r
\r
///\r
/// PE32+ Machine type for IA64 UEFI images\r
///\r
-#define EFI_IMAGE_MACHINE_IA64 0x0200\r
+#define EFI_IMAGE_MACHINE_IA64 0x0200\r
\r
///\r
/// PE32+ Machine type for EBC UEFI images\r
///\r
-#define EFI_IMAGE_MACHINE_EBC 0x0EBC\r
+#define EFI_IMAGE_MACHINE_EBC 0x0EBC\r
\r
///\r
/// PE32+ Machine type for X64 UEFI images\r
///\r
-#define EFI_IMAGE_MACHINE_X64 0x8664\r
+#define EFI_IMAGE_MACHINE_X64 0x8664\r
+\r
+///\r
+/// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images\r
+///\r
+#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2\r
\r
\r
#if defined (MDE_CPU_IA32)\r
\r
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32) \r
\r
+#elif defined (MDE_CPU_ARM)\r
+\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+ (((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) \r
+\r
#elif defined (MDE_CPU_EBC)\r
\r
///\r
/// This is just to make sure you can cross compile with the EBC compiler.\r
-/// It does not make sense to have a PE loader coded in EBC. You need to \r
-/// understand the basic \r
+/// It does not make sense to have a PE loader coded in EBC. \r
///\r
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)\r
\r