iLLD_TC27xD  1.0
Insert / Extract Bit-fields and Bits
Collaboration diagram for Insert / Extract Bit-fields and Bits:

Macros

#define __getbit(address, bitoffset)   ((*(address) & (1U << (bitoffset))) != 0)
 
#define __imaskldmst(address, value, bitoffset, bits)
 
#define __putbit(value, address, bitoffset)   __imaskldmst(address, value, bitoffset,1)
 

Functions

IFX_INLINE sint32 __extr (sint32 a, uint32 p, uint32 w)
 
IFX_INLINE uint32 __extru (uint32 a, uint32 p, uint32 w)
 
IFX_INLINE sint32 __ins (sint32 trg, const sint32 trgbit, sint32 src, const sint32 srcbit)
 
IFX_INLINE sint32 __insert (sint32 a, sint32 b, sint32 p, const sint32 w)
 
IFX_INLINE sint32 __insn (sint32 trg, const sint32 trgbit, sint32 src, const sint32 srcbit)
 

Detailed Description

Macro Definition Documentation

#define __getbit (   address,
  bitoffset 
)    ((*(address) & (1U << (bitoffset))) != 0)

Load a single bit.

Definition at line 371 of file IfxCpu_IntrinsicsGnuc.h.

#define __imaskldmst (   address,
  value,
  bitoffset,
  bits 
)
Value:
{long long tmp;\
__asm__("imask %A0,%1,%2,%3"\
:"=d"((long long)tmp)\
:"d"(value),"d"(bitoffset),"i"(bits): "memory");\
__asm__("ldmst [%0]0,%A1"::"a"(address),"d"(tmp): "memory");}

Atomic load-modify-store.

Definition at line 375 of file IfxCpu_IntrinsicsGnuc.h.

#define __putbit (   value,
  address,
  bitoffset 
)    __imaskldmst(address, value, bitoffset,1)

Store a single bit.

Definition at line 414 of file IfxCpu_IntrinsicsGnuc.h.

Function Documentation

IFX_INLINE sint32 __extr ( sint32  a,
uint32  p,
uint32  w 
)

Extract a bit-field (bit pos to bit pos+width) from value

Definition at line 346 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE uint32 __extru ( uint32  a,
uint32  p,
uint32  w 
)

Same as __extr() but return bit-field as unsigned integer

Definition at line 358 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE sint32 __ins ( sint32  trg,
const sint32  trgbit,
sint32  src,
const sint32  srcbit 
)

Return trg but replace trgbit by srcbit in src.

Definition at line 384 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE sint32 __insert ( sint32  a,
sint32  b,
sint32  p,
const sint32  w 
)

Extract bit-field (width bits starting at bit 0) from src and insert it in trg at pos.

Definition at line 393 of file IfxCpu_IntrinsicsGnuc.h.

IFX_INLINE sint32 __insn ( sint32  trg,
const sint32  trgbit,
sint32  src,
const sint32  srcbit 
)

Return trg but replace trgbit by inverse of srcbit in src.

Definition at line 405 of file IfxCpu_IntrinsicsGnuc.h.