diff options
Diffstat (limited to 'usr/klibc/arch/riscv64/MCONFIG')
-rw-r--r-- | usr/klibc/arch/riscv64/MCONFIG | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/klibc/arch/riscv64/MCONFIG b/usr/klibc/arch/riscv64/MCONFIG new file mode 100644 index 0000000..717aeda --- /dev/null +++ b/usr/klibc/arch/riscv64/MCONFIG @@ -0,0 +1,29 @@ +# -*- makefile -*- +# +# arch/riscv64/MCONFIG +# +# Special rules for this architecture. Note that this is actually +# included from the main Makefile, and that pathnames should be +# accordingly. +# + +KLIBCOPTFLAGS += -Os -fomit-frame-pointer +ifeq ($(DEBUG),y) +KLIBCOPTFLAGS += -g +endif +KLIBCBITSIZE = 64 + +# Normal binaries start at 64 kiB. Jumps can use either a single +# instruction with offset of ±1 MiB, or two instructions with offset +# of ±2 GiB. Putting klibc.so close above the executable can cause +# breakage, so instead swap them around: klibc.so at 64 kiB and +# executable at 576 kiB. +KLIBCLDFLAGS = $(LD_IMAGE_BASE_OPT) 0x90000 +KLIBCSHAREDFLAGS = $(LD_IMAGE_BASE_OPT) 0x10000 +KLIBCSHAREDFLAGS += --defsym '__global_pointer$$=0' + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n + +KLIBCEMAIN := -e _main +KLIBCCRTSHARED += $(KLIBCOBJ)/arch/riscv64/_main.o |