summaryrefslogtreecommitdiff
path: root/utility/demo-fw/include/dfm_varloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'utility/demo-fw/include/dfm_varloc.h')
-rw-r--r--utility/demo-fw/include/dfm_varloc.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/utility/demo-fw/include/dfm_varloc.h b/utility/demo-fw/include/dfm_varloc.h
new file mode 100644
index 0000000..48c118d
--- /dev/null
+++ b/utility/demo-fw/include/dfm_varloc.h
@@ -0,0 +1,49 @@
+#ifndef __DFM_VARLOC_H_
+#define __DFM_VARLOC_H
+
+#include "dfm_fatfs.h"
+#include "dfm_config.h"
+
+// relocation variables that size is bigger to space start from RELOC_VAR_MEM_BASE
+#ifdef VAR_RELOCATION
+
+ #if defined(__ICCARM__)
+
+ #define RLOC_OBJ __no_init
+ #define _AT(addr) @ (addr)
+
+ #elif defined(__CC_ARM)
+
+ #define RLOC_OBJ
+ #define _AT(addr) __attribute__ ((at(_addr)))
+
+ #elif defined(__GNUC__)
+
+ #define RLOC_OBJ
+ #define _AT(addr)
+ #else
+ #error "Unsupported tool chain"
+ #endif
+
+#else
+ #define RLOC_OBJ
+ #define _AT(addr)
+#endif
+
+#if defined(VAR_RELOCATION) && !defined(RELOC_VAR_MEM_BASE)
+ #error "Enable variables relocation, but not give RELOC_VAR_MEM_BASE"
+#endif
+
+#define FATFS_MEDIA_OBJ_ADDR RELOC_VAR_MEM_BASE
+#define FATFS_SDCARD_OBJ_ADDR (FATFS_MEDIA_OBJ_ADDR + sizeof(Media) * MAX_LUNS)
+#define FATFS_NANDFLASH_OBJ_ADDR (FATFS_SDCARD_OBJ_ADDR + sizeof(FATFS))
+#define NANDFLASH_TRANS_TAB_ADDR (FATFS_NANDFLASH_OBJ_ADDR + sizeof(FATFS))
+#define ACTIVESLIDE_INFOHEAD_ADDR (NANDFLASH_TRANS_TAB_ADDR + sizeof(struct TranslatedNandFlash))
+#define FILE_BUFFER_ADDR (ACTIVESLIDE_INFOHEAD_ADDR + sizeof(SlideINFOHeader))
+
+#define MSDD_LUN_OBJ_ADDR (FILE_BUFFER_ADDR + FILE_BUF_SIZE)
+#define MSDD_BUF_OBJ_ADDR (MSDD_LUN_OBJ_ADDR + sizeof(MSDLun) * MAX_LUNS)
+#define RELOC_VAR_MEM_END (MSDD_BUF_OBJ_ADDR + MSD_BUFFER_SIZE)
+#define RELOC_VAR_MEM_SIZE (RELOC_VAR_MEM_END - RELOC_VAR_MEM_BASE)
+
+#endif // end of _DFM_VARLOC_H_
personal git repositories of Harald Welte. Your mileage may vary