break;
case GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE:
{
- grub_efi_vendor_device_path_t vendor;
- grub_memcpy (&vendor, dp, sizeof (vendor));
+ grub_efi_vendor_device_path_t *vendor = (grub_efi_vendor_device_path_t *) dp;
grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
- (unsigned) vendor.vendor_guid.data1,
- (unsigned) vendor.vendor_guid.data2,
- (unsigned) vendor.vendor_guid.data3,
- (unsigned) vendor.vendor_guid.data4[0],
- (unsigned) vendor.vendor_guid.data4[1],
- (unsigned) vendor.vendor_guid.data4[2],
- (unsigned) vendor.vendor_guid.data4[3],
- (unsigned) vendor.vendor_guid.data4[4],
- (unsigned) vendor.vendor_guid.data4[5],
- (unsigned) vendor.vendor_guid.data4[6],
- (unsigned) vendor.vendor_guid.data4[7]);
+ (unsigned) vendor->vendor_guid.data1,
+ (unsigned) vendor->vendor_guid.data2,
+ (unsigned) vendor->vendor_guid.data3,
+ (unsigned) vendor->vendor_guid.data4[0],
+ (unsigned) vendor->vendor_guid.data4[1],
+ (unsigned) vendor->vendor_guid.data4[2],
+ (unsigned) vendor->vendor_guid.data4[3],
+ (unsigned) vendor->vendor_guid.data4[4],
+ (unsigned) vendor->vendor_guid.data4[5],
+ (unsigned) vendor->vendor_guid.data4[6],
+ (unsigned) vendor->vendor_guid.data4[7]);
}
break;
case GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE:
break;
case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE:
{
- grub_efi_vendor_messaging_device_path_t vendor;
- grub_memcpy (&vendor, dp, sizeof (vendor));
+ grub_efi_vendor_messaging_device_path_t *vendor
+ = (grub_efi_vendor_messaging_device_path_t *) dp;
grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
- (unsigned) vendor.vendor_guid.data1,
- (unsigned) vendor.vendor_guid.data2,
- (unsigned) vendor.vendor_guid.data3,
- (unsigned) vendor.vendor_guid.data4[0],
- (unsigned) vendor.vendor_guid.data4[1],
- (unsigned) vendor.vendor_guid.data4[2],
- (unsigned) vendor.vendor_guid.data4[3],
- (unsigned) vendor.vendor_guid.data4[4],
- (unsigned) vendor.vendor_guid.data4[5],
- (unsigned) vendor.vendor_guid.data4[6],
- (unsigned) vendor.vendor_guid.data4[7]);
+ (unsigned) vendor->vendor_guid.data1,
+ (unsigned) vendor->vendor_guid.data2,
+ (unsigned) vendor->vendor_guid.data3,
+ (unsigned) vendor->vendor_guid.data4[0],
+ (unsigned) vendor->vendor_guid.data4[1],
+ (unsigned) vendor->vendor_guid.data4[2],
+ (unsigned) vendor->vendor_guid.data4[3],
+ (unsigned) vendor->vendor_guid.data4[4],
+ (unsigned) vendor->vendor_guid.data4[5],
+ (unsigned) vendor->vendor_guid.data4[6],
+ (unsigned) vendor->vendor_guid.data4[7]);
}
break;
default:
{
case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE:
{
- grub_efi_hard_drive_device_path_t hd;
- grub_memcpy (&hd, dp, len);
+ grub_efi_hard_drive_device_path_t *hd = (grub_efi_hard_drive_device_path_t *) dp;
grub_printf ("/HD(%u,%llx,%llx,%02x%02x%02x%02x%02x%02x%02x%02x,%x,%x)",
- hd.partition_number,
- (unsigned long long) hd.partition_start,
- (unsigned long long) hd.partition_size,
- (unsigned) hd.partition_signature[0],
- (unsigned) hd.partition_signature[1],
- (unsigned) hd.partition_signature[2],
- (unsigned) hd.partition_signature[3],
- (unsigned) hd.partition_signature[4],
- (unsigned) hd.partition_signature[5],
- (unsigned) hd.partition_signature[6],
- (unsigned) hd.partition_signature[7],
- (unsigned) hd.mbr_type,
- (unsigned) hd.signature_type);
+ hd->partition_number,
+ (unsigned long long) hd->partition_start,
+ (unsigned long long) hd->partition_size,
+ (unsigned) hd->partition_signature[0],
+ (unsigned) hd->partition_signature[1],
+ (unsigned) hd->partition_signature[2],
+ (unsigned) hd->partition_signature[3],
+ (unsigned) hd->partition_signature[4],
+ (unsigned) hd->partition_signature[5],
+ (unsigned) hd->partition_signature[6],
+ (unsigned) hd->partition_signature[7],
+ (unsigned) hd->mbr_type,
+ (unsigned) hd->signature_type);
}
break;
case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE:
break;
case GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE:
{
- grub_efi_vendor_media_device_path_t vendor;
- grub_memcpy (&vendor, dp, sizeof (vendor));
+ grub_efi_vendor_device_path_t *vendor = (grub_efi_vendor_device_path_t *) dp;
+
grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
- (unsigned) vendor.vendor_guid.data1,
- (unsigned) vendor.vendor_guid.data2,
- (unsigned) vendor.vendor_guid.data3,
- (unsigned) vendor.vendor_guid.data4[0],
- (unsigned) vendor.vendor_guid.data4[1],
- (unsigned) vendor.vendor_guid.data4[2],
- (unsigned) vendor.vendor_guid.data4[3],
- (unsigned) vendor.vendor_guid.data4[4],
- (unsigned) vendor.vendor_guid.data4[5],
- (unsigned) vendor.vendor_guid.data4[6],
- (unsigned) vendor.vendor_guid.data4[7]);
+ (unsigned) vendor->vendor_guid.data1,
+ (unsigned) vendor->vendor_guid.data2,
+ (unsigned) vendor->vendor_guid.data3,
+ (unsigned) vendor->vendor_guid.data4[0],
+ (unsigned) vendor->vendor_guid.data4[1],
+ (unsigned) vendor->vendor_guid.data4[2],
+ (unsigned) vendor->vendor_guid.data4[3],
+ (unsigned) vendor->vendor_guid.data4[4],
+ (unsigned) vendor->vendor_guid.data4[5],
+ (unsigned) vendor->vendor_guid.data4[6],
+ (unsigned) vendor->vendor_guid.data4[7]);
}
break;
case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE:
} __attribute__ ((aligned(8)));
typedef struct grub_efi_guid grub_efi_guid_t;
+struct grub_efi_packed_guid
+{
+ grub_uint32_t data1;
+ grub_uint16_t data2;
+ grub_uint16_t data3;
+ grub_uint8_t data4[8];
+} __attribute__ ((packed));
+typedef struct grub_efi_packed_guid grub_efi_packed_guid_t;
+
/* XXX although the spec does not specify the padding, this actually
must have the padding! */
struct grub_efi_memory_descriptor
struct grub_efi_vendor_device_path
{
grub_efi_device_path_t header;
- grub_efi_guid_t vendor_guid;
+ grub_efi_packed_guid_t vendor_guid;
grub_efi_uint8_t vendor_defined_data[0];
} __attribute__ ((packed));
typedef struct grub_efi_vendor_device_path grub_efi_vendor_device_path_t;
struct grub_efi_vendor_messaging_device_path
{
grub_efi_device_path_t header;
- grub_efi_guid_t vendor_guid;
+ grub_efi_packed_guid_t vendor_guid;
grub_efi_uint8_t vendor_defined_data[0];
} __attribute__ ((packed));
typedef struct grub_efi_vendor_messaging_device_path grub_efi_vendor_messaging_device_path_t;
struct grub_efi_vendor_media_device_path
{
grub_efi_device_path_t header;
- grub_efi_guid_t vendor_guid;
+ grub_efi_packed_guid_t vendor_guid;
grub_efi_uint8_t vendor_defined_data[0];
} __attribute__ ((packed));
typedef struct grub_efi_vendor_media_device_path grub_efi_vendor_media_device_path_t;
struct grub_efi_protocol_device_path
{
grub_efi_device_path_t header;
- grub_efi_guid_t guid;
+ grub_efi_packed_guid_t guid;
} __attribute__ ((packed));
typedef struct grub_efi_protocol_device_path grub_efi_protocol_device_path_t;
struct grub_efi_piwg_device_path
{
grub_efi_device_path_t header;
- grub_efi_guid_t guid __attribute__ ((packed));
+ grub_efi_packed_guid_t guid;
} __attribute__ ((packed));
typedef struct grub_efi_piwg_device_path grub_efi_piwg_device_path_t;
grub_efi_status_t
(*protocols_per_handle) (grub_efi_handle_t handle,
- grub_efi_guid_t ***protocol_buffer,
+ grub_efi_packed_guid_t ***protocol_buffer,
grub_efi_uintn_t *protocol_buffer_count);
grub_efi_status_t
struct grub_efi_configuration_table
{
- grub_efi_guid_t vendor_guid;
+ grub_efi_packed_guid_t vendor_guid;
void *vendor_table;
} __attribute__ ((packed));
typedef struct grub_efi_configuration_table grub_efi_configuration_table_t;