m68k: add bss initialization

This commit is contained in:
Zack Buhman 2023-05-17 12:59:55 +00:00
parent 911896e909
commit ae4bfec20a
3 changed files with 20 additions and 4 deletions

3
m68k.h
View File

@ -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");

View File

@ -42,7 +42,7 @@ all: main.bin
$(CXX) $(CFLAGS) $(CXXFLAGS) $(CARCH) -c $< -o $@ $(CXX) $(CFLAGS) $(CXXFLAGS) $(CARCH) -c $< -o $@
%.elf: %.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 %.bin: %.elf
$(OBJCOPY) -O binary $< $@ $(OBJCOPY) -O binary $< $@

19
m68k/start.cpp Normal file
View File

@ -0,0 +1,19 @@
#include <stdint.h>
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);
}