Greg KH
2025-Sep-29 19:37 UTC
[PATCH v4 1/6] nova-core: bitfield: Move bitfield-specific code from register! into new macro
On Mon, Sep 29, 2025 at 03:26:57PM -0400, Joel Fernandes wrote:> On 9/24/2025 12:40 PM, Greg KH wrote: > > On Tue, Sep 23, 2025 at 06:24:34PM -0400, Joel Fernandes wrote: > [..] > > > >> For the separate issue of enforcing endianness with respect to (across) > >> multiple fields, I agree with you that if the user's backend (the consumer of > >> the data) is not doing such conversion, say via regmap, then that becomes a > >> problem. But that problem is orthogonal/different and cannot be solved here. > > > > But that is exactly what these macros are being defined here for, so to > > ignore that is going to cause problems :) > > > > If needed, happy to add endianness support as needed by providing additional > options to the macro. Based on this thread, it sounds like we want see if that > is really needed here or can be solved elsewhere (?). The mental model I kind of > have is this macro should only be dealing with CPU native endianness, much like > bitfields in C deal with CPU endianness. Hmm.Just don't go down the old path like drivers/net/fddi/skfp/h/supern_2.h does with it's definition of: union tx_descr { struct { #ifdef LITTLE_ENDIAN unsigned int tx_length:16 ; /* frame length lower/upper byte */ unsigned int tx_res :8 ; /* reserved (bit 16..23) */ unsigned int tx_xmtabt:1 ; /* transmit abort */ unsigned int tx_nfcs :1 ; /* no frame check sequence */ unsigned int tx_xdone :1 ; /* give up token */ unsigned int tx_rpxm :2 ; /* byte offset */ unsigned int tx_pat1 :2 ; /* must be TXP1 */ unsigned int tx_more :1 ; /* more frame in chain */ #else unsigned int tx_more :1 ; /* more frame in chain */ unsigned int tx_pat1 :2 ; /* must be TXP1 */ unsigned int tx_rpxm :2 ; /* byte offset */ unsigned int tx_xdone :1 ; /* give up token */ unsigned int tx_nfcs :1 ; /* no frame check sequence */ unsigned int tx_xmtabt:1 ; /* transmit abort */ unsigned int tx_res :8 ; /* reserved (bit 16..23) */ unsigned int tx_length:16 ; /* frame length lower/upper byte */ #endif } t ; long i ; } ; CPU endinness, hah, as if...