r = "#ifndef __GENERATED_CSR_H\n#define __GENERATED_CSR_H\n"
if with_access_functions:
r += "#include <stdint.h>\n"
+ r += "#ifdef CSR_ACCESSORS_DEFINED\n"
+ r += "extern void csr_writeb(uint8_t value, uint32_t addr);\n"
+ r += "extern uint8_t csr_readb(uint32_t addr);\n"
+ r += "extern void csr_writew(uint16_t value, uint32_t addr);\n"
+ r += "extern uint16_t csr_readw(uint32_t addr);\n"
+ r += "extern void csr_writel(uint32_t value, uint32_t addr);\n"
+ r += "extern uint32_t csr_readl(uint32_t addr);\n"
+ r += "#else /* ! CSR_ACCESSORS_DEFINED */\n"
r += "#include <hw/common.h>\n"
+ r += "#endif /* ! CSR_ACCESSORS_DEFINED */\n"
for name, origin, busword, obj in regions:
if not with_shadow_base:
origin &= (~shadow_base)
#include <stdint.h>
+/* To overwrite CSR accessors, define extern, non-inlined versions
+ * of csr_read[bwl]() and csr_write[bwl](), and define
+ * CSR_ACCESSORS_DEFINED.
+ */
+
+#ifndef CSR_ACCESSORS_DEFINED
+#define CSR_ACCESSORS_DEFINED
+
#ifdef __ASSEMBLER__
#define MMPTR(x) x
#else /* ! __ASSEMBLER__ */
}
#endif /* ! __ASSEMBLER__ */
+#endif /* ! CSR_ACCESSORS_DEFINED */
+
#endif /* __HW_COMMON_H */