mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-19 16:40:46 -09:00
This will make it easier to modify the patch series moving forward. No
functional changes.
On one patch, we added the SoB from Giulio, which was missing. Giulio
was the original contributor of the patch, and nobody touched it since
it was introduced.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
(cherry picked from commit 3ee745782a)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
72 lines
2.3 KiB
Diff
72 lines
2.3 KiB
Diff
From 8f7e9458dbfca969d3edc9cf409b3439e98f4c5a Mon Sep 17 00:00:00 2001
|
|
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
Date: Sun, 1 Dec 2024 15:45:26 +0100
|
|
Subject: [PATCH] Fix build on big endian systems
|
|
|
|
The usb_linux_client.c file defines cpu_to_le16/32 by using the C
|
|
library htole16/32 function calls. However, cpu_to_le16/32 are used
|
|
when initializing structures, i.e in a context where a function call
|
|
is not allowed.
|
|
|
|
It works fine on little endian systems because htole16/32 are defined
|
|
by the C library as no-ops. But on big-endian systems, they are
|
|
actually doing something, which might involve calling a function,
|
|
causing build failures.
|
|
|
|
To solve this, we simply open-code cpu_to_le16/32 in a way that allows
|
|
them to be used when initializing structures.
|
|
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
---
|
|
core/adb/usb_linux_client.c | 11 +++++++++--
|
|
core/adbd/usb_linux_client.c | 11 +++++++++--
|
|
2 files changed, 18 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/core/adb/usb_linux_client.c b/core/adb/usb_linux_client.c
|
|
index fb1dad0..a981e96 100644
|
|
--- a/core/adb/usb_linux_client.c
|
|
+++ b/core/adb/usb_linux_client.c
|
|
@@ -34,8 +34,15 @@
|
|
#define MAX_PACKET_SIZE_FS 64
|
|
#define MAX_PACKET_SIZE_HS 512
|
|
|
|
-#define cpu_to_le16(x) htole16(x)
|
|
-#define cpu_to_le32(x) htole32(x)
|
|
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
+# define cpu_to_le16(x) (x)
|
|
+# define cpu_to_le32(x) (x)
|
|
+#else
|
|
+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
|
|
+# define cpu_to_le32(x) \
|
|
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
|
|
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
|
|
+#endif
|
|
|
|
struct usb_handle
|
|
{
|
|
diff --git a/core/adbd/usb_linux_client.c b/core/adbd/usb_linux_client.c
|
|
index 33875a8..0e4d200 100644
|
|
--- a/core/adbd/usb_linux_client.c
|
|
+++ b/core/adbd/usb_linux_client.c
|
|
@@ -34,8 +34,15 @@
|
|
#define MAX_PACKET_SIZE_FS 64
|
|
#define MAX_PACKET_SIZE_HS 512
|
|
|
|
-#define cpu_to_le16(x) htole16(x)
|
|
-#define cpu_to_le32(x) htole32(x)
|
|
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
+# define cpu_to_le16(x) (x)
|
|
+# define cpu_to_le32(x) (x)
|
|
+#else
|
|
+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
|
|
+# define cpu_to_le32(x) \
|
|
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
|
|
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
|
|
+#endif
|
|
|
|
struct usb_handle
|
|
{
|
|
--
|
|
2.47.0
|
|
|