1LOCAL_DIR := $(GET_LOCAL_DIR)
2
3MODULE := $(LOCAL_DIR)
4
5MODULE_SRCS += $(LOCAL_DIR)/arch.c
6MODULE_SRCS += $(LOCAL_DIR)/asm.S
7MODULE_SRCS += $(LOCAL_DIR)/exceptions.c
8MODULE_SRCS += $(LOCAL_DIR)/exceptions_asm.S
9MODULE_SRCS += $(LOCAL_DIR)/start.S
10MODULE_SRCS += $(LOCAL_DIR)/thread.c
11
12GLOBAL_DEFINES += SMP_MAX_CPUS=1
13
14# set the default toolchain to microblaze elf and set a #define
15ifndef TOOLCHAIN_PREFIX
16TOOLCHAIN_PREFIX := m68k-elf-
17endif
18
19# select the cpu based on flags the platform/target passes in
20M68K_CPU ?= 68040 # default to 040
21
22ifeq ($(M68K_CPU),68000)
23ARCH_COMPILEFLAGS := -mcpu=68000
24else ifeq ($(M68K_CPU),68010)
25ARCH_COMPILEFLAGS := -mcpu=68010
26else ifeq ($(M68K_CPU),68020)
27ARCH_COMPILEFLAGS := -mcpu=68020
28else ifeq ($(M68K_CPU),68030)
29ARCH_COMPILEFLAGS := -mcpu=68030
30else ifeq ($(M68K_CPU),68040)
31ARCH_COMPILEFLAGS := -mcpu=68040
32else
33$(error add support for selected cpu $(M68K_CPU))
34endif
35
36LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(GLOBAL_COMPILEFLAGS) -print-libgcc-file-name)
37$(info LIBGCC = $(LIBGCC))
38
39cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
40	then echo "$(2)"; else echo "$(3)"; fi ;)
41
42ARCH_OPTFLAGS := -O2
43
44KERNEL_BASE ?= $(MEMBASE)
45KERNEL_LOAD_OFFSET ?= 0
46
47GLOBAL_DEFINES += MEMBASE=$(MEMBASE)
48GLOBAL_DEFINES += MEMSIZE=$(MEMSIZE)
49GLOBAL_DEFINES += M68K_CPU=$(M68K_CPU)
50GLOBAL_DEFINES += M68K_CPU_$(M68K_CPU)=1
51
52# potentially generated files that should be cleaned out with clean make rule
53GENERATED += \
54	$(BUILDDIR)/linker.ld
55
56# rules for generating the linker
57$(BUILDDIR)/linker.ld: $(LOCAL_DIR)/linker.ld $(wildcard arch/*.ld) linkerscript.phony
58	@echo generating $@
59	@$(MKDIR)
60	$(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@.tmp
61	@$(call TESTANDREPLACEFILE,$@.tmp,$@)
62
63linkerscript.phony:
64.PHONY: linkerscript.phony
65
66LINKER_SCRIPT += $(BUILDDIR)/linker.ld
67
68include make/module.mk
69