Changeset ea3eadf in rtems-central


Ignore:
Timestamp:
03/15/23 07:39:35 (7 months ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
master
Children:
77414f1
Parents:
7c0ddcc
git-author:
Sebastian Huber <sebastian.huber@…> (03/15/23 07:39:35)
git-committer:
Sebastian Huber <sebastian.huber@…> (03/15/23 07:47:37)
Message:

interface: Improve register bit field macros

Update #4828.

Location:
rtemsspec
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • rtemsspec/interface.py

    r7c0ddcc rea3eadf  
    578578            end = start + width
    579579            sfx = "ULL" if end > 32 else "U"
    580             define = f"#define {prefix.upper()}{bit['name'].upper()}"
     580            base = f"{prefix.upper()}{bit['name'].upper()}"
    581581            if index != 0:
    582582                lines.append("")
    583583            if width == 1:
    584584                val = 1 << start
    585                 lines.append(f"{define} {val:#x}{sfx}")
     585                lines.append(f"#define {base} {val:#x}{sfx}")
    586586            else:
    587587                mask = ((1 << width) - 1) << start
    588                 get = (1 << width) - 1
    589588                lines.extend([
    590                     f"{define}_SHIFT {start}", f"{define}_MASK {mask:#x}{sfx}",
    591                     f"{define}_GET( _reg ) \\",
    592                     f"  ( ( ( _reg ) >> {start} ) & {get:#x}{sfx} )",
    593                     f"{define}( _val ) ( ( _val ) << {start} )"
     589                    f"#define {base}_SHIFT {start}",
     590                    f"#define {base}_MASK {mask:#x}{sfx}",
     591                    f"#define {base}_GET( _reg ) \\",
     592                    f"  ( ( ( _reg ) & {base}_MASK ) >> {base}_SHIFT )",
     593                    f"#define {base}( _val ) \\",
     594                    f"  ( ( _val ) << {base}_SHIFT )"
    594595                ])
    595596        return lines
  • rtemsspec/tests/test_interface.py

    r7c0ddcc rea3eadf  
    266266#define IRQAMP_ITCNT_TCNT_MASK 0xffffffffU
    267267#define IRQAMP_ITCNT_TCNT_GET( _reg ) \\
    268   ( ( ( _reg ) >> 0 ) & 0xffffffffU )
    269 #define IRQAMP_ITCNT_TCNT( _val ) ( ( _val ) << 0 )
     268  ( ( ( _reg ) & IRQAMP_ITCNT_TCNT_MASK ) >> IRQAMP_ITCNT_TCNT_SHIFT )
     269#define IRQAMP_ITCNT_TCNT( _val ) \\
     270  ( ( _val ) << IRQAMP_ITCNT_TCNT_SHIFT )
    270271
    271272/** @} */
     
    283284#define IRQAMP_ITSTMPC_TSTAMP_MASK 0xf8000000U
    284285#define IRQAMP_ITSTMPC_TSTAMP_GET( _reg ) \\
    285   ( ( ( _reg ) >> 27 ) & 0x1fU )
    286 #define IRQAMP_ITSTMPC_TSTAMP( _val ) ( ( _val ) << 27 )
     286  ( ( ( _reg ) & IRQAMP_ITSTMPC_TSTAMP_MASK ) >> IRQAMP_ITSTMPC_TSTAMP_SHIFT )
     287#define IRQAMP_ITSTMPC_TSTAMP( _val ) \\
     288  ( ( _val ) << IRQAMP_ITSTMPC_TSTAMP_SHIFT )
    287289
    288290#define IRQAMP_ITSTMPC_S1 0x4000000U
     
    295297#define IRQAMP_ITSTMPC_TSISEL_MASK 0x1fU
    296298#define IRQAMP_ITSTMPC_TSISEL_GET( _reg ) \\
    297   ( ( ( _reg ) >> 0 ) & 0x1fU )
    298 #define IRQAMP_ITSTMPC_TSISEL( _val ) ( ( _val ) << 0 )
     299  ( ( ( _reg ) & IRQAMP_ITSTMPC_TSISEL_MASK ) >> IRQAMP_ITSTMPC_TSISEL_SHIFT )
     300#define IRQAMP_ITSTMPC_TSISEL( _val ) \\
     301  ( ( _val ) << IRQAMP_ITSTMPC_TSISEL_SHIFT )
    299302
    300303/** @} */
     
    312315#define IRQAMP_ITSTMPAS_TASSERTION_MASK 0xffffffffU
    313316#define IRQAMP_ITSTMPAS_TASSERTION_GET( _reg ) \\
    314   ( ( ( _reg ) >> 0 ) & 0xffffffffU )
    315 #define IRQAMP_ITSTMPAS_TASSERTION( _val ) ( ( _val ) << 0 )
     317  ( ( ( _reg ) & IRQAMP_ITSTMPAS_TASSERTION_MASK ) >> IRQAMP_ITSTMPAS_TASSERTION_SHIFT )
     318#define IRQAMP_ITSTMPAS_TASSERTION( _val ) \\
     319  ( ( _val ) << IRQAMP_ITSTMPAS_TASSERTION_SHIFT )
    316320
    317321/** @} */
     
    329333#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK 0xffffffffU
    330334#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_GET( _reg ) \\
    331   ( ( ( _reg ) >> 0 ) & 0xffffffffU )
    332 #define IRQAMP_ITSTMPAC_TACKNOWLEDGE( _val ) ( ( _val ) << 0 )
     335  ( ( ( _reg ) & IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK ) >> IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT )
     336#define IRQAMP_ITSTMPAC_TACKNOWLEDGE( _val ) \\
     337  ( ( _val ) << IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT )
    333338
    334339/** @} */
     
    383388#define IRQAMP_ILEVEL_IL_15_1_MASK 0xfffeU
    384389#define IRQAMP_ILEVEL_IL_15_1_GET( _reg ) \\
    385   ( ( ( _reg ) >> 1 ) & 0x7fffU )
    386 #define IRQAMP_ILEVEL_IL_15_1( _val ) ( ( _val ) << 1 )
     390  ( ( ( _reg ) & IRQAMP_ILEVEL_IL_15_1_MASK ) >> IRQAMP_ILEVEL_IL_15_1_SHIFT )
     391#define IRQAMP_ILEVEL_IL_15_1( _val ) \\
     392  ( ( _val ) << IRQAMP_ILEVEL_IL_15_1_SHIFT )
    387393
    388394/** @} */
Note: See TracChangeset for help on using the changeset viewer.