diff --git a/m68k.h b/m68k.h deleted file mode 100644 index c5dd0ec..0000000 --- a/m68k.h +++ /dev/null @@ -1,3 +0,0 @@ -extern unsigned long _binary_m68k_main_bin_end __asm("_binary_m68k_main_bin_end"); -extern unsigned long _binary_m68k_main_bin_size __asm("_binary_m68k_main_bin_size"); -extern unsigned long _binary_m68k_main_bin_start __asm("_binary_m68k_main_bin_start"); diff --git a/m68k/common.mk b/m68k/common.mk index 4bda9f8..02c93d7 100644 --- a/m68k/common.mk +++ b/m68k/common.mk @@ -42,7 +42,7 @@ all: main.bin $(CXX) $(CFLAGS) $(CXXFLAGS) $(CARCH) -c $< -o $@ %.elf: - $(LD) $(LDFLAGS) -T $(LIB)/m68k/m68k.lds $(LIB)/m68k/vectors.o $(LIB)/m68k/handlers.o $^ -o $@ + $(LD) $(LDFLAGS) -T $(LIB)/m68k/m68k.lds $(LIB)/m68k/vectors.o $(LIB)/m68k/start.o $(LIB)/m68k/handlers.o $^ -o $@ %.bin: %.elf $(OBJCOPY) -O binary $< $@ diff --git a/m68k/start.cpp b/m68k/start.cpp new file mode 100644 index 0000000..d36bd51 --- /dev/null +++ b/m68k/start.cpp @@ -0,0 +1,19 @@ +#include + +extern uint32_t * __bss_link_start; +extern uint32_t * __bss_link_end; +extern void main(); + +extern "C" +void start(void) +{ + uint32_t * start = __bss_link_start; + uint32_t * end = __bss_link_end; + while (start < end) { + *start++ = 0; + } + + main(); + + while (1); +}