mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-30 10:49:28 +00:00
mod/file2alias: make modalias generation safe for cross compiling
Use the target compiler to compute the offsets for the fields of the device_id structures, so that it won't be broken by different alignments between the host and target ABIs. This also fixes missing endian corrections for some modaliases. Signed-off-by: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
parent
a49f0d1ea3
commit
6543becf26
8 changed files with 590 additions and 367 deletions
|
@ -33,8 +33,7 @@ struct ieee1394_device_id {
|
|||
__u32 model_id;
|
||||
__u32 specifier_id;
|
||||
__u32 version;
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data;
|
||||
};
|
||||
|
||||
|
||||
|
@ -148,8 +147,7 @@ struct hid_device_id {
|
|||
__u16 group;
|
||||
__u32 vendor;
|
||||
__u32 product;
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data;
|
||||
};
|
||||
|
||||
/* s390 CCW devices */
|
||||
|
@ -173,8 +171,6 @@ struct ccw_device_id {
|
|||
struct ap_device_id {
|
||||
__u16 match_flags; /* which fields to match against */
|
||||
__u8 dev_type; /* device type */
|
||||
__u8 pad1;
|
||||
__u32 pad2;
|
||||
kernel_ulong_t driver_info;
|
||||
};
|
||||
|
||||
|
@ -184,13 +180,10 @@ struct ap_device_id {
|
|||
struct css_device_id {
|
||||
__u8 match_flags;
|
||||
__u8 type; /* subchannel type */
|
||||
__u16 pad2;
|
||||
__u32 pad3;
|
||||
kernel_ulong_t driver_data;
|
||||
};
|
||||
|
||||
#define ACPI_ID_LEN 16 /* only 9 bytes needed here, 16 bytes are used */
|
||||
/* to workaround crosscompile issues */
|
||||
#define ACPI_ID_LEN 9
|
||||
|
||||
struct acpi_device_id {
|
||||
__u8 id[ACPI_ID_LEN];
|
||||
|
@ -231,11 +224,7 @@ struct of_device_id
|
|||
char name[32];
|
||||
char type[32];
|
||||
char compatible[128];
|
||||
#ifdef __KERNEL__
|
||||
const void *data;
|
||||
#else
|
||||
kernel_ulong_t data;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* VIO */
|
||||
|
@ -260,24 +249,14 @@ struct pcmcia_device_id {
|
|||
/* for pseudo multi-function devices */
|
||||
__u8 device_no;
|
||||
|
||||
__u32 prod_id_hash[4]
|
||||
__attribute__((aligned(sizeof(__u32))));
|
||||
__u32 prod_id_hash[4];
|
||||
|
||||
/* not matched against in kernelspace*/
|
||||
#ifdef __KERNEL__
|
||||
const char * prod_id[4];
|
||||
#else
|
||||
kernel_ulong_t prod_id[4]
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
#endif
|
||||
|
||||
/* not matched against */
|
||||
kernel_ulong_t driver_info;
|
||||
#ifdef __KERNEL__
|
||||
char * cisfile;
|
||||
#else
|
||||
kernel_ulong_t cisfile;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001
|
||||
|
@ -373,8 +352,7 @@ struct sdio_device_id {
|
|||
__u8 class; /* Standard interface or SDIO_ANY_ID */
|
||||
__u16 vendor; /* Vendor or SDIO_ANY_ID */
|
||||
__u16 device; /* Device ID or SDIO_ANY_ID */
|
||||
kernel_ulong_t driver_data /* Data private to the driver */
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data; /* Data private to the driver */
|
||||
};
|
||||
|
||||
/* SSB core, see drivers/ssb/ */
|
||||
|
@ -420,8 +398,7 @@ struct virtio_device_id {
|
|||
*/
|
||||
struct hv_vmbus_device_id {
|
||||
__u8 guid[16];
|
||||
kernel_ulong_t driver_data /* Data private to the driver */
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data; /* Data private to the driver */
|
||||
};
|
||||
|
||||
/* rpmsg */
|
||||
|
@ -440,8 +417,7 @@ struct rpmsg_device_id {
|
|||
|
||||
struct i2c_device_id {
|
||||
char name[I2C_NAME_SIZE];
|
||||
kernel_ulong_t driver_data /* Data private to the driver */
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data; /* Data private to the driver */
|
||||
};
|
||||
|
||||
/* spi */
|
||||
|
@ -451,8 +427,7 @@ struct i2c_device_id {
|
|||
|
||||
struct spi_device_id {
|
||||
char name[SPI_NAME_SIZE];
|
||||
kernel_ulong_t driver_data /* Data private to the driver */
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data; /* Data private to the driver */
|
||||
};
|
||||
|
||||
/* dmi */
|
||||
|
@ -484,15 +459,6 @@ struct dmi_strmatch {
|
|||
char substr[79];
|
||||
};
|
||||
|
||||
#ifndef __KERNEL__
|
||||
struct dmi_system_id {
|
||||
kernel_ulong_t callback;
|
||||
kernel_ulong_t ident;
|
||||
struct dmi_strmatch matches[4];
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
};
|
||||
#else
|
||||
struct dmi_system_id {
|
||||
int (*callback)(const struct dmi_system_id *);
|
||||
const char *ident;
|
||||
|
@ -506,7 +472,6 @@ struct dmi_system_id {
|
|||
* error: storage size of '__mod_dmi_device_table' isn't known
|
||||
*/
|
||||
#define dmi_device_id dmi_system_id
|
||||
#endif
|
||||
|
||||
#define DMI_MATCH(a, b) { a, b }
|
||||
|
||||
|
@ -515,8 +480,7 @@ struct dmi_system_id {
|
|||
|
||||
struct platform_device_id {
|
||||
char name[PLATFORM_NAME_SIZE];
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
kernel_ulong_t driver_data;
|
||||
};
|
||||
|
||||
#define MDIO_MODULE_PREFIX "mdio:"
|
||||
|
@ -572,11 +536,7 @@ struct isapnp_device_id {
|
|||
struct amba_id {
|
||||
unsigned int id;
|
||||
unsigned int mask;
|
||||
#ifndef __KERNEL__
|
||||
kernel_ulong_t data;
|
||||
#else
|
||||
void *data;
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue