diff --git a/cpu/mc1322x/Makefile.mc1322x b/cpu/mc1322x/Makefile.mc1322x index 443c26f8f..185077562 100644 --- a/cpu/mc1322x/Makefile.mc1322x +++ b/cpu/mc1322x/Makefile.mc1322x @@ -40,7 +40,7 @@ PROJECT_OBJECTFILES += ${addprefix $(OBJECTDIR)/,$(CONTIKI_TARGET_MAIN:.c=.o)} TEXT_BASE = 0x00400000 export TEXT_BASE -LINKERSCRIPT = $(CONTIKI_CPU)/mc1322x.lds +LINKERSCRIPT = $(OBJECTDIR)/mc1322x.lds STARTUP=$(OBJECTDIR)/start.o @@ -70,6 +70,8 @@ CUSTOM_RULE_C_TO_OBJECTDIR_O=yes CUSTOM_RULE_C_TO_O=yes CFLAGS += -I$(OBJECTDIR) -I$(CONTIKI_CPU)/board -DBOARD=$(TARGET) +CPPFLAGS += -P -C ${addprefix -D,${subst $(COMMA), ,$(DEFINES)}} + $(OBJECTDIR)/board.h: $(OBJECTDIR) ifeq ($(HOST_OS),Windows) @@ -78,6 +80,8 @@ else ln -sf ../$(CONTIKI_CPU)/board/board.h $(OBJECTDIR)/board.h endif +$(OBJECTDIR)/%.lds: $(CONTIKI_CPU)/%.lds.S + $(CPP) $(CPPFLAGS) $< > $@ $(OBJECTDIR)/isr.o: $(CONTIKI_CPU)/src/isr.c $(CC) $(CFLAGS) $(ARM_FLAGS) $< -c -o $@ @@ -109,7 +113,7 @@ CUSTOM_RULE_C_TO_CO=yes %.$(TARGET): %_$(TARGET).bin @ -%.elf: $(OBJECTDIR)/board.h %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a $(STARTUP) - $(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(filter %.a,$^) +%.elf: $(OBJECTDIR)/board.h %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a $(STARTUP) $(OBJECTDIR)/mc1322x.lds + $(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o $@ $(filter-out %.a %.lds,$^) $(filter %.a,$^) $(filter %.a,$^) diff --git a/cpu/mc1322x/mc1322x.lds b/cpu/mc1322x/mc1322x.lds.S similarity index 90% rename from cpu/mc1322x/mc1322x.lds rename to cpu/mc1322x/mc1322x.lds.S index 95fcb2665..baf458ae4 100644 --- a/cpu/mc1322x/mc1322x.lds +++ b/cpu/mc1322x/mc1322x.lds.S @@ -1,3 +1,45 @@ +#ifndef SYS_CONF_STACK_SIZE +#define SYS_STACK_SIZE 2048 +#else +#define SYS_STACK_SIZE SYS_CONF_STACK_SIZE +#endif + +#ifndef IRQ_CONF_STACK_SIZE +#define IRQ_STACK_SIZE 128 +#else +#define IRQ_STACK_SIZE IRQ_CONF_STACK_SIZE +#endif + +#ifndef FIQ_CONF_STACK_SIZE +#define FIQ_STACK_SIZE 128 +#else +#define FIQ_STACK_SIZE FIQ_CONF_STACK_SIZE +#endif + +#ifndef SVC_CONF_STACK_SIZE +#define SVC_STACK_SIZE 16 +#else +#define SVC_STACK_SIZE SVC_CONF_STACK_SIZE +#endif + +#ifndef ABT_CONF_STACK_SIZE +#define ABT_STACK_SIZE 16 +#else +#define ABT_STACK_SIZE ABT_CONF_STACK_SIZE +#endif + +#ifndef UND_CONF_STACK_SIZE +#define UND_STACK_SIZE 16 +#else +#define UND_STACK_SIZE UND_CONF_STACK_SIZE +#endif + +#ifndef HEAP_CONF_SIZE +#define HEAP_SIZE 16 +#else +#define HEAP_SIZE HEAP_CONF_SIZE +#endif + /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") @@ -12,14 +54,6 @@ MEMORY SECTIONS { -SYS_STACK_SIZE = 1024; -IRQ_STACK_SIZE = 256; -FIQ_STACK_SIZE = 256; -SVC_STACK_SIZE = 256; -ABT_STACK_SIZE = 16; -UND_STACK_SIZE = 16; -HEAP_SIZE = 4096; - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x00400000); . = 0x00400000; .text : @@ -169,26 +203,32 @@ HEAP_SIZE = 4096; .stack : { __stack_start__ = . ; + /* IRQ_STACK */ . += IRQ_STACK_SIZE; . = ALIGN (4); __irq_stack_top__ = . ; + /* FIQ_STACK */ . += FIQ_STACK_SIZE; . = ALIGN (4); __fiq_stack_top__ = . ; + /* SVC_STACK */ . += SVC_STACK_SIZE; . = ALIGN (4); __svc_stack_top__ = . ; + /* ABT_STACK */ . += ABT_STACK_SIZE; . = ALIGN (4); __abt_stack_top__ = . ; + /* UND_STACK */ . += UND_STACK_SIZE; . = ALIGN (4); __und_stack_top__ = . ; + /* SYS_STACK */ . += SYS_STACK_SIZE; . = ALIGN (4); __sys_stack_top__ = . ;