arch_xt_io_utils.h File Reference

yasimavr: arch_xt_io_utils.h File Reference
yasimavr
Loading...
Searching...
No Matches
arch_xt_io_utils.h File Reference
#include <stddef.h>

Go to the source code of this file.

Macros

#define DEF_BITSPEC_F(field)    bitspec_t(field ## _gp + bitmask_t(field ## _gm).bitcount() - 1, field ## _gp)
 
#define DEF_BITSPEC_B(bit)    bitspec_t(bit ## _bp)
 
#define DEF_REGBIT_F(addr, field)    regbit_t(REG_ADDR(addr), DEF_BITSPEC_F(field))
 
#define DEF_REGBIT_B(addr, bit)    regbit_t(REG_ADDR(addr), DEF_BITSPEC_B(bit))
 
#define EXTRACT_F(reg, field)    (((reg) & field ## _gm) >> field ## _gp)
 
#define EXTRACT_B(reg, bit)    (((reg) & bit ## _bm) >> bit ## _bp)
 
#define EXTRACT_GC(reg, field)    ((reg) & field ## _gm)
 
#define READ_IOREG(reg)    read_ioreg(REG_ADDR(reg))
 
#define READ_IOREG_F(reg, field)    read_ioreg(REG_ADDR(reg), DEF_BITSPEC_F(field))
 
#define READ_IOREG_B(reg, bit)    read_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))
 
#define READ_IOREG_F_GC(reg, field)    (READ_IOREG(reg) & field ## _gm)
 
#define READ_IOREG_B_GC(reg, field)    (READ_IOREG(reg) & field ## _bm)
 
#define WRITE_IOREG(reg, value)    write_ioreg(REG_ADDR(reg), (value));
 
#define WRITE_IOREG_F(reg, field, value)    write_ioreg(DEF_REGBIT_F(reg, field), (value))
 
#define WRITE_IOREG_B(reg, bit, value)    write_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit), (value))
 
#define WRITE_IOREG_F_GC(reg, field, gc_value)    WRITE_IOREG_F(reg, field, (gc_value) >> field ## _gp)
 
#define WRITE_IOREG_B_GC(reg, field, gc_value)    WRITE_IOREG_B(reg, field, (gc_value) >> field ## _bp)
 
#define TEST_IOREG(reg, bit)    test_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))
 
#define SET_IOREG(reg, bit)    set_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))
 
#define CLEAR_IOREG(reg, bit)    clear_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))
 

Macro Definition Documentation

◆ CLEAR_IOREG

#define CLEAR_IOREG (   reg,
  bit 
)     clear_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))

◆ DEF_BITSPEC_B

#define DEF_BITSPEC_B (   bit)     bitspec_t(bit ## _bp)

◆ DEF_BITSPEC_F

#define DEF_BITSPEC_F (   field)     bitspec_t(field ## _gp + bitmask_t(field ## _gm).bitcount() - 1, field ## _gp)

◆ DEF_REGBIT_B

#define DEF_REGBIT_B (   addr,
  bit 
)     regbit_t(REG_ADDR(addr), DEF_BITSPEC_B(bit))

◆ DEF_REGBIT_F

#define DEF_REGBIT_F (   addr,
  field 
)     regbit_t(REG_ADDR(addr), DEF_BITSPEC_F(field))

◆ EXTRACT_B

#define EXTRACT_B (   reg,
  bit 
)     (((reg) & bit ## _bm) >> bit ## _bp)

◆ EXTRACT_F

#define EXTRACT_F (   reg,
  field 
)     (((reg) & field ## _gm) >> field ## _gp)

◆ EXTRACT_GC

#define EXTRACT_GC (   reg,
  field 
)     ((reg) & field ## _gm)

◆ READ_IOREG

#define READ_IOREG (   reg)     read_ioreg(REG_ADDR(reg))

◆ READ_IOREG_B

#define READ_IOREG_B (   reg,
  bit 
)     read_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))

◆ READ_IOREG_B_GC

#define READ_IOREG_B_GC (   reg,
  field 
)     (READ_IOREG(reg) & field ## _bm)

◆ READ_IOREG_F

#define READ_IOREG_F (   reg,
  field 
)     read_ioreg(REG_ADDR(reg), DEF_BITSPEC_F(field))

◆ READ_IOREG_F_GC

#define READ_IOREG_F_GC (   reg,
  field 
)     (READ_IOREG(reg) & field ## _gm)

◆ SET_IOREG

#define SET_IOREG (   reg,
  bit 
)     set_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))

◆ TEST_IOREG

#define TEST_IOREG (   reg,
  bit 
)     test_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit))

◆ WRITE_IOREG

#define WRITE_IOREG (   reg,
  value 
)     write_ioreg(REG_ADDR(reg), (value));

◆ WRITE_IOREG_B

#define WRITE_IOREG_B (   reg,
  bit,
  value 
)     write_ioreg(REG_ADDR(reg), DEF_BITSPEC_B(bit), (value))

◆ WRITE_IOREG_B_GC

#define WRITE_IOREG_B_GC (   reg,
  field,
  gc_value 
)     WRITE_IOREG_B(reg, field, (gc_value) >> field ## _bp)

◆ WRITE_IOREG_F

#define WRITE_IOREG_F (   reg,
  field,
  value 
)     write_ioreg(DEF_REGBIT_F(reg, field), (value))

◆ WRITE_IOREG_F_GC

#define WRITE_IOREG_F_GC (   reg,
  field,
  gc_value 
)     WRITE_IOREG_F(reg, field, (gc_value) >> field ## _gp)