diff options
author | Björn Stenberg <bjorn@haxx.se> | 2003-07-13 22:15:19 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2003-07-13 22:15:19 +0000 |
commit | 13d56150b6678841a67cdca5acbb484814e78ce7 (patch) | |
tree | 0b20688a008f0037301f31945fcd5ad43b946d28 | |
parent | 9cb5e0e9f94e0660682f35b7ae2d55a82f009f03 (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/Makefile | 2 | ||||
-rw-r--r-- | apps/plugin.c | 7 | ||||
-rw-r--r-- | apps/plugin.h | 10 | ||||
-rw-r--r-- | apps/plugins/Makefile | 10 | ||||
-rw-r--r-- | apps/plugins/plugin.lds | 6 |
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 |