-       USB_ControlRequest.bmRequestType = Endpoint_Read_Byte();
-       USB_ControlRequest.bRequest      = Endpoint_Read_Byte();
-       USB_ControlRequest.wValue        = le16_to_cpu(Endpoint_Read_Word_LE());
-       USB_ControlRequest.wIndex        = le16_to_cpu(Endpoint_Read_Word_LE());
-       USB_ControlRequest.wLength       = le16_to_cpu(Endpoint_Read_Word_LE());
+       #if defined(ARCH_BIG_ENDIAN)
+       USB_ControlRequest.bmRequestType = Endpoint_Read_8();
+       USB_ControlRequest.bRequest      = Endpoint_Read_8();
+       USB_ControlRequest.wValue        = Endpoint_Read_16_LE();
+       USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
+       USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
+       #else
+       uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
+
+       for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
+         *(RequestHeader++) = Endpoint_Read_8();
+       #endif