Adaptations for Renesas CCRX toolchain and Rx72N controller performed
This commit is contained in:
@@ -48,6 +48,8 @@
|
||||
#define TU_VERIFY_STATIC _Static_assert
|
||||
#elif defined (__cplusplus) && __cplusplus >= 201103L
|
||||
#define TU_VERIFY_STATIC static_assert
|
||||
#elif defined(__CCRX__)
|
||||
#define TU_VERIFY_STATIC(const_expr, _mess) typedef char TU_XSTRCAT(Line, __LINE__)[(const_expr) ? 1 : 0];
|
||||
#else
|
||||
#define TU_VERIFY_STATIC(const_expr, _mess) enum { TU_XSTRCAT(_verify_static_, _TU_COUNTER_) = 1/(!!(const_expr)) }
|
||||
#endif
|
||||
@@ -62,6 +64,9 @@
|
||||
// Compiler porting with Attribute and Endian
|
||||
//--------------------------------------------------------------------+
|
||||
|
||||
// define the standard definition of this macro to construct a "weak" function name
|
||||
#define MAKE_WEAK_FUNC(func_name) func_name
|
||||
|
||||
// TODO refactor since __attribute__ is supported across many compiler
|
||||
#if defined(__GNUC__)
|
||||
#define TU_ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes)))
|
||||
@@ -73,9 +78,17 @@
|
||||
#define TU_ATTR_UNUSED __attribute__ ((unused)) // Function/Variable is meant to be possibly unused
|
||||
#define TU_ATTR_USED __attribute__ ((used)) // Function/Variable is meant to be used
|
||||
|
||||
#define TU_PACK_STRUCT_BEGIN
|
||||
#define TU_PACK_STRUCT_END
|
||||
|
||||
#define TU_BIT_FIELD_ORDER_BEGIN
|
||||
#define TU_BIT_FIELD_ORDER_END
|
||||
|
||||
// Endian conversion use well-known host to network (big endian) naming
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
#define TU_BYTE_ORDER TU_LITTLE_ENDIAN
|
||||
#define TU_ENDIAN_LITTLE_BEGIN
|
||||
#define TU_ENDIAN_LITTLE_END
|
||||
#else
|
||||
#define TU_BYTE_ORDER TU_BIG_ENDIAN
|
||||
#endif
|
||||
@@ -123,6 +136,77 @@
|
||||
|
||||
#define TU_BSWAP16(u16) (__iar_builtin_REV16(u16))
|
||||
#define TU_BSWAP32(u32) (__iar_builtin_REV(u32))
|
||||
|
||||
#elif defined(__CCRX__)
|
||||
#define TU_ATTR_ALIGNED(Bytes)
|
||||
#define TU_ATTR_SECTION(sec_name)
|
||||
#define TU_ATTR_PACKED
|
||||
#define TU_ATTR_WEAK
|
||||
#define TU_ATTR_ALWAYS_INLINE
|
||||
#define TU_ATTR_DEPRECATED(mess)
|
||||
#define TU_ATTR_UNUSED
|
||||
#define TU_ATTR_USED
|
||||
|
||||
#define TU_PACK_STRUCT_BEGIN _Pragma("pack")
|
||||
#define TU_PACK_STRUCT_END _Pragma("packoption")
|
||||
|
||||
#define TU_BIT_FIELD_ORDER_BEGIN _Pragma("bit_order right")
|
||||
#define TU_BIT_FIELD_ORDER_END _Pragma("bit_order")
|
||||
|
||||
// Endian conversion use well-known host to network (big endian) naming
|
||||
#if defined(__LIT)
|
||||
#define TU_BYTE_ORDER TU_LITTLE_ENDIAN
|
||||
#define TU_ENDIAN_LITTLE_BEGIN
|
||||
#define TU_ENDIAN_LITTLE_END
|
||||
#else
|
||||
#define TU_BYTE_ORDER TU_BIG_ENDIAN
|
||||
#define TU_ENDIAN_LITTLE_BEGIN _Pragma("endian little")
|
||||
#define TU_ENDIAN_LITTLE_END _Pragma("endian")
|
||||
#endif
|
||||
|
||||
#define TU_BSWAP16(u16) ((unsigned short)_builtin_revw((unsigned long)u16))
|
||||
#define TU_BSWAP32(u32) (_builtin_revl(u32))
|
||||
|
||||
/* activate the "aligned" emulation, because this toolchain does not know
|
||||
the aligned attribute (or something similar yet) */
|
||||
#define TU_HAS_NO_ATTR_ALIGNED
|
||||
|
||||
/* activate the "weak" function emulation, because this toolchain does not
|
||||
know the weak attribute (or something similar yet) */
|
||||
#define TU_HAS_NO_ATTR_WEAK
|
||||
|
||||
// make sure to define away the standard definition of this macro
|
||||
#undef MAKE_WEAK_FUNC
|
||||
// Helper macro to construct a "weak" function name
|
||||
#define MAKE_WEAK_FUNC(func_name) weak_ ## func_name
|
||||
|
||||
#if defined(TU_HAS_NO_ATTR_WEAK)
|
||||
// "Weak function" emulation defined in cdc_device.h
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_RX_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_RX_WANTED_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_TX_COMPLETE_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_LINE_STATE_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_LINE_CODING_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_CDC_SEND_BREAK_CB 0
|
||||
|
||||
// "Weak function" emulation defined in usbd_pvt.h
|
||||
#define ADD_WEAK_FUNC_USBD_APP_DRIVER_GET_CB 0
|
||||
|
||||
// "Weak function" emulation defined in usbd.h
|
||||
#define ADD_WEAK_FUNC_TUD_DESCRIPTOR_BOS_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_DESCRIPTOR_DEVICE_QUALIFIER_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_MOUNT_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_UMOUNT_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_SUSPEND_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_RESUME_CB 0
|
||||
#define ADD_WEAK_FUNC_TUD_VENDOR_CONTROL_XFER_CB 0
|
||||
|
||||
// "Weak function" emulation defined in dcd.h
|
||||
#define ADD_WEAK_FUNC_DCD_EDPT0_STATUS_COMPLETE 0
|
||||
#define ADD_WEAK_FUNC_DCD_EDPT_CLOSE 0
|
||||
#define ADD_WEAK_FUNC_DCD_EDPT_XFER_FIFO 0
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error "Compiler attribute porting is required"
|
||||
#endif
|
||||
@@ -149,11 +233,11 @@
|
||||
#define tu_htonl(u32) (u32)
|
||||
#define tu_ntohl(u32) (u32)
|
||||
|
||||
#define tu_htole16(u16) (tu_bswap16(u16))
|
||||
#define tu_le16toh(u16) (tu_bswap16(u16))
|
||||
#define tu_htole16(u16) (TU_BSWAP16(u16))
|
||||
#define tu_le16toh(u16) (TU_BSWAP16(u16))
|
||||
|
||||
#define tu_htole32(u32) (tu_bswap32(u32))
|
||||
#define tu_le32toh(u32) (tu_bswap32(u32))
|
||||
#define tu_htole32(u32) (TU_BSWAP32(u32))
|
||||
#define tu_le32toh(u32) (TU_BSWAP32(u32))
|
||||
|
||||
#else
|
||||
#error Byte order is undefined
|
||||
|
||||
Reference in New Issue
Block a user