mirror of https://github.com/xemu-project/xemu.git
hw/net/can/ctucan_core: Handle big-endian hosts
The ctucan driver defines types for its registers which are a union of a uint32_t with a struct with bitfields for the individual fields within that register. This is a bad idea, because bitfields aren't portable. The ctu_can_fd_regs.h header works around the most glaring of the portability issues by defining the fields in two different orders depending on the setting of the __LITTLE_ENDIAN_BITFIELD define. However, in ctucan_core.h this is unconditionally set to 1, which is wrong for big-endian hosts. Set it only if HOST_WORDS_BIGENDIAN is not set. There is no need for a "have we defined it already" guard, because the only place that should set it is ctucan_core.h, which has the usual double-inclusion guard. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Acked-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> Tested-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
e0784d8375
commit
676ea985c0
|
@ -31,8 +31,7 @@
|
|||
#include "exec/hwaddr.h"
|
||||
#include "net/can_emu.h"
|
||||
|
||||
|
||||
#ifndef __LITTLE_ENDIAN_BITFIELD
|
||||
#ifndef HOST_WORDS_BIGENDIAN
|
||||
#define __LITTLE_ENDIAN_BITFIELD 1
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue