summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2003-07-13 22:15:19 +0000
committerBjörn Stenberg <bjorn@haxx.se>2003-07-13 22:15:19 +0000
commit13d56150b6678841a67cdca5acbb484814e78ce7 (patch)
tree0b20688a008f0037301f31945fcd5ad43b946d28
parent9cb5e0e9f94e0660682f35b7ae2d55a82f009f03 (diff)
Added plugin support for 8MB-modified units. This bumps the plugin API version number again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3831 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/Makefile2
-rw-r--r--apps/plugin.c7
-rw-r--r--apps/plugin.h10
-rw-r--r--apps/plugins/Makefile10
-rw-r--r--apps/plugins/plugin.lds6
5 files changed, 26 insertions, 9 deletions
diff --git a/apps/Makefile b/apps/Makefile
index 9614050cda..55ef599d4f 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -74,7 +74,7 @@ endif
all : $(OBJDIR)/$(OUTNAME) rocks
rocks:
- $(MAKE) -C plugins TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)"
+ $(MAKE) -C plugins TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEM}
$(OBJDIR)/librockbox.a:
make -C $(FIRMWARE) TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR)
diff --git a/apps/plugin.c b/apps/plugin.c
index 01604c0e24..ad3cbdca43 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -49,7 +49,7 @@
#define PREFIX(_x_) _x_
#endif
-static int plugin_test(int api_version, int model);
+static int plugin_test(int api_version, int model, int memsize);
static struct plugin_api rockbox_api = {
PLUGIN_API_VERSION,
@@ -230,7 +230,7 @@ int plugin_load(char* plugin, void* parameter)
return PLUGIN_OK;
}
-int plugin_test(int api_version, int model)
+int plugin_test(int api_version, int model, int memsize)
{
if (api_version != PLUGIN_API_VERSION)
return PLUGIN_WRONG_API_VERSION;
@@ -238,5 +238,8 @@ int plugin_test(int api_version, int model)
if (model != MODEL)
return PLUGIN_WRONG_MODEL;
+ if (memsize != MEM)
+ return PLUGIN_WRONG_MODEL;
+
return PLUGIN_OK;
}
diff --git a/apps/plugin.h b/apps/plugin.h
index 12953ebc4d..dab3320b2a 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -25,6 +25,10 @@
#define NO_REDEFINES_PLEASE
#endif
+#ifndef MEM
+#define MEM 2
+#endif
+
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -37,7 +41,7 @@
#include "lcd.h"
/* increase this every time the api struct changes */
-#define PLUGIN_API_VERSION 3
+#define PLUGIN_API_VERSION 4
/* plugin return codes */
enum plugin_status {
@@ -64,7 +68,7 @@ enum model {
/* compatibility test macro */
#define TEST_PLUGIN_API(_api_) \
do { \
- int _rc_ = _api_->plugin_test(PLUGIN_API_VERSION, MODEL); \
+ int _rc_ = _api_->plugin_test(PLUGIN_API_VERSION, MODEL, MEM); \
if (_rc_<0) \
return _rc_; \
} while(0)
@@ -73,7 +77,7 @@ struct plugin_api {
/* these two fields must always be first, to ensure
TEST_PLUGIN_API will always work */
int version;
- int (*plugin_test)(int api_version, int model);
+ int (*plugin_test)(int api_version, int model, int memsize);
/* lcd */
void (*lcd_clear_display)(void);
diff --git a/apps/plugins/Makefile b/apps/plugins/Makefile
index 4c02207016..dca7babcc6 100644
--- a/apps/plugins/Makefile
+++ b/apps/plugins/Makefile
@@ -13,9 +13,10 @@ OC = sh-elf-objcopy
FIRMWARE = ../../firmware
INCLUDES = -I$(FIRMWARE)/include -I$(FIRMWARE)/export -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I..
-CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES)
+CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEM}
-LINKFILE = plugin.lds
+LDS := plugin.lds
+LINKFILE := $(OBJDIR)/pluginlink.lds
SRC := $(wildcard *.c)
ROCKS := $(SRC:%.c=$(OBJDIR)/%.rock)
@@ -41,5 +42,10 @@ $(OBJDIR)/%.o: %.c ../plugin.h Makefile
all: $(ROCKS)
@echo done
+# MEM should be passed on to this makefile with the chosen memory size given
+# in number of MB
+$(LINKFILE): $(LDS)
+ cat $< | $(CC) -DMEMORYSIZE=$(MEM) $(DEFINES) -E -P - >$@
+
clean:
-rm -f $(ROCKS)
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index bc24901dad..c8354fae11 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -1,8 +1,12 @@
OUTPUT_FORMAT(elf32-sh)
+#define PLUGIN_LENGTH 0x8000
+#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGIN_LENGTH
+#define PLUGIN_ORIGIN (0x09000000 + (DRAMSIZE))
+
MEMORY
{
- PLUGIN_RAM : ORIGIN = 0x091f8000, LENGTH = 0x8000
+ PLUGIN_RAM : ORIGIN = PLUGIN_ORIGIN, LENGTH = PLUGIN_LENGTH
}
SECTIONS