1LOCAL_DIR := $(GET_LOCAL_DIR)
2
3MODULE := $(LOCAL_DIR)
4
5MODULE_SRCS += \
6	$(LOCAL_DIR)/start.S \
7	$(LOCAL_DIR)/arch.c \
8	$(LOCAL_DIR)/asm.S \
9	$(LOCAL_DIR)/exceptions.c \
10	$(LOCAL_DIR)/thread.c \
11	$(LOCAL_DIR)/cache-ops.c \
12	$(LOCAL_DIR)/mmu.c \
13	$(LOCAL_DIR)/faults.c
14
15GLOBAL_DEFINES += \
16	SMP_MAX_CPUS=1
17
18# set the default toolchain to or1k elf and set a #define
19ifndef TOOLCHAIN_PREFIX
20TOOLCHAIN_PREFIX := or1k-elf-
21endif
22
23cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
24	then echo "$(2)"; else echo "$(3)"; fi ;)
25
26ARCH_OPTFLAGS := -O2
27
28ARCH_LDFLAGS += -relax
29
30LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
31$(info LIBGCC = $(LIBGCC))
32
33KERNEL_BASE ?= $(MEMBASE)
34KERNEL_LOAD_OFFSET ?= 0
35
36GLOBAL_DEFINES += \
37	KERNEL_BASE=$(KERNEL_BASE) \
38	KERNEL_LOAD_OFFSET=$(KERNEL_LOAD_OFFSET)
39
40GLOBAL_DEFINES += \
41    MEMBASE=$(MEMBASE) \
42    MEMSIZE=$(MEMSIZE)
43
44# we have an mmu
45WITH_KERNEL_VM=1
46
47GLOBAL_DEFINES += \
48    ARCH_HAS_MMU=1
49
50# potentially generated files that should be cleaned out with clean make rule
51GENERATED += \
52	$(BUILDDIR)/linker.ld
53
54# rules for generating the linker
55$(BUILDDIR)/linker.ld: $(LOCAL_DIR)/linker.ld $(wildcard arch/*.ld)
56	@echo generating $@
57	@$(MKDIR)
58	$(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@
59
60LINKER_SCRIPT += $(BUILDDIR)/linker.ld
61
62include make/module.mk
63