Make DSC files relocatable.
* Make the header const. It will be modified after loading, but making
it non-const would need a gsinit, wasting disk space and RAM.
diff --git a/contiki-cpc/Makefile.programs b/contiki-cpc/Makefile.programs
index ab7a742..f358863 100644
--- a/contiki-cpc/Makefile.programs
+++ b/contiki-cpc/Makefile.programs
@@ -86,8 +86,8 @@
# conversion of intel hex record to binary, cpc binary with header, then inject into disc image
define MAKE_DSC
-echo -i $(@:.dsc=.ihx) > $@.lnk
- echo arch/crt0-prg.o >> $@.lnk
+echo -ihn $(@:.dsc=.ihx) > $@.lnk
+ echo arch/crt0-dsc.o >> $@.lnk
echo $< >> $@.lnk
echo -e >> $@.lnk
$(LD) -f $@.lnk
diff --git a/contiki-cpc/apps/configedit-dsc.c b/contiki-cpc/apps/configedit-dsc.c
index fcb9250..8586d94 100644
--- a/contiki-cpc/apps/configedit-dsc.c
+++ b/contiki-cpc/apps/configedit-dsc.c
@@ -35,7 +35,6 @@
#include "dsc.h"
-extern const struct ctk_icon configedit_icon;
/*-----------------------------------------------------------------------------------*/
DSC(configedit_dsc,
"Edit Contiki configuration",
@@ -67,6 +66,6 @@
};
#endif /* CTK_CONF_ICON_TEXTMAPS */
-const struct ctk_icon configedit_icon =
+static const struct ctk_icon configedit_icon =
{CTK_ICON("Configuration", tcpipconficon_bitmap, tcpipconficon_textmap)};
/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-cpc/apps/directory-dsc.c b/contiki-cpc/apps/directory-dsc.c
index 0ddca7b..caa0b63 100644
--- a/contiki-cpc/apps/directory-dsc.c
+++ b/contiki-cpc/apps/directory-dsc.c
@@ -35,7 +35,6 @@
#include "dsc.h"
-extern const struct ctk_icon directory_icon;
/*-----------------------------------------------------------------------------------*/
const DSC(directory_dsc,
"Directory reader",
@@ -67,6 +66,6 @@
};
#endif /* CTK_CONF_ICON_TEXTMAPS */
-const struct ctk_icon directory_icon =
+static const struct ctk_icon directory_icon =
{CTK_ICON("Directory", directoryicon_bitmap, directoryicon_textmap)};
/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-cpc/arch/crt0-dsc.s b/contiki-cpc/arch/crt0-dsc.s
index 381bc27..b7b3974 100644
--- a/contiki-cpc/arch/crt0-dsc.s
+++ b/contiki-cpc/arch/crt0-dsc.s
@@ -11,6 +11,7 @@
;; Ordering of segments for the linker.
.area _HOME (REL)
.area _CODE (REL)
+ .dw 0 ; Will be replaced by relocation data
.area _GSINIT (REL)
.area _GSFINAL (REL)
diff --git a/contiki/apps/about-dsc.c b/contiki/apps/about-dsc.c
index 83a208b..2814ee1 100644
--- a/contiki/apps/about-dsc.c
+++ b/contiki/apps/about-dsc.c
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon about_icon =
+static const struct ctk_icon about_icon =
{CTK_ICON("About Contiki", abouticon_bitmap, abouticon_textmap)};
#else
extern struct ctk_icon about_icon;
diff --git a/contiki/apps/calc-dsc.c b/contiki/apps/calc-dsc.c
index 7b8355c..48ba8e6 100644
--- a/contiki/apps/calc-dsc.c
+++ b/contiki/apps/calc-dsc.c
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon calc_icon =
+static const struct ctk_icon calc_icon =
{CTK_ICON("Calculator", calcicon_bitmap, calcicon_textmap)};
#else
extern struct ctk_icon calc_icon;
diff --git a/contiki/apps/editor-dsc.c b/contiki/apps/editor-dsc.c
index 59d5ba3..308b78f 100644
--- a/contiki/apps/editor-dsc.c
+++ b/contiki/apps/editor-dsc.c
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon editor_icon =
+static const struct ctk_icon editor_icon =
{CTK_ICON("Editor", editoricon_bitmap, editoricon_textmap)};
#else
extern struct ctk_icon editor_icon;
diff --git a/contiki/apps/netconf-dsc.c b/contiki/apps/netconf-dsc.c
index 33858e0..609e0bc 100644
--- a/contiki/apps/netconf-dsc.c
+++ b/contiki/apps/netconf-dsc.c
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon netconf_icon =
+static const struct ctk_icon netconf_icon =
{CTK_ICON("Network setup", tcpipconficon_bitmap, tcpipconficon_textmap)};
#else
extern struct ctk_icon netconf_icon;
diff --git a/contiki/apps/processes-dsc.c b/contiki/apps/processes-dsc.c
index e2c37df..e289818 100644
--- a/contiki/apps/processes-dsc.c
+++ b/contiki/apps/processes-dsc.c
@@ -38,7 +38,7 @@
/*-----------------------------------------------------------------------------------*/
DSC(processes_dsc,
"Process information",
- "processes.prg",
+ "process.prg",
processes_init,
&processes_icon);
/*-----------------------------------------------------------------------------------*/
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon processes_icon =
+static const struct ctk_icon processes_icon =
{CTK_ICON("Processes", processesicon_bitmap, processesicon_textmap)};
#else
extern struct ctk_icon processes_icon;
diff --git a/contiki/apps/shell-dsc.c b/contiki/apps/shell-dsc.c
index 8268838..73a9430 100644
--- a/contiki/apps/shell-dsc.c
+++ b/contiki/apps/shell-dsc.c
@@ -67,7 +67,7 @@
#endif /* CTK_CONF_ICON_TEXTMAPS */
#if CTK_CONF_ICONS
-static struct ctk_icon shell_icon =
+static const struct ctk_icon shell_icon =
{CTK_ICON("Command shell", shellicon_bitmap, shellicon_textmap)};
#else
extern struct ctk_icon shell_icon;