35 #define MEM_MANAGER_PORT 5
37 #define IMR_BASE_OFFSET 0x40
38 #define IMR_REG_COUNT 4
40 #define IMR_LO_OFFSET 0
41 #define IMR_HI_OFFSET 1
42 #define IMR_RDMSK_OFFSET 2
43 #define IMR_WRMSK_OFFSET 3
50 quarkX1000_imr_read(uint32_t imr_idx)
53 uint32_t reg_base = IMR_BASE_OFFSET + (IMR_REG_COUNT * imr_idx);
55 assert(imr_idx < QUARKX1000_IMR_CNT);
57 quarkX1000_msg_bus_read(MEM_MANAGER_PORT,
58 reg_base + IMR_LO_OFFSET, &imr.lo.raw);
59 quarkX1000_msg_bus_read(MEM_MANAGER_PORT,
60 reg_base + IMR_HI_OFFSET, &imr.hi.raw);
61 quarkX1000_msg_bus_read(MEM_MANAGER_PORT,
62 reg_base + IMR_RDMSK_OFFSET, &imr.rdmsk.raw);
63 quarkX1000_msg_bus_read(MEM_MANAGER_PORT,
64 reg_base + IMR_WRMSK_OFFSET, &imr.wrmsk.raw);
73 quarkX1000_imr_write(uint32_t imr_idx, quarkX1000_imr_t imr)
75 uint32_t reg_base = IMR_BASE_OFFSET + (IMR_REG_COUNT * imr_idx);
77 assert(imr_idx < QUARKX1000_IMR_CNT);
79 quarkX1000_msg_bus_write(MEM_MANAGER_PORT,
80 reg_base + IMR_HI_OFFSET, imr.hi.raw);
81 quarkX1000_msg_bus_write(MEM_MANAGER_PORT,
82 reg_base + IMR_RDMSK_OFFSET, imr.rdmsk.raw);
83 quarkX1000_msg_bus_write(MEM_MANAGER_PORT,
84 reg_base + IMR_WRMSK_OFFSET, imr.wrmsk.raw);
86 quarkX1000_msg_bus_write(MEM_MANAGER_PORT,
87 reg_base + IMR_LO_OFFSET, imr.lo.raw);