6b72948d73
Use __riscv_flen instead of __riscv_float_abi_soft. While the latter works for userland (and one could argue it's more correct), it fails for the kernel. We compile the kernel with -mabi=lp64 (eg soft float abi) to avoid floating point instructions in the kernel. We also compile the kernel -march=rv64imafdc for hard float kernels (eg those with options FPE), but with -march=rv64imac for softfloat kernels (eg those with FPE). Since we do this, in the kernel (as in userland) __riscv_flen will be defined for 'riscv64' and not for 'riscv64sf'. This also removes the -DMACHINE_ARCH hack now that it's no longer needed. Longer term, we should return the ABI from the sysctl hw.machine_arch like on amd64 for i386 binaries. Suggested by: mhorne@ Differential Revision: https://reviews.freebsd.org/D23813
67 lines
1.7 KiB
Makefile
67 lines
1.7 KiB
Makefile
# Makefile.riscv -- with config changes.
|
|
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# from FreeBSD: src/sys/conf/Makefile.i386,v 1.255 2002/02/20 23:35:49
|
|
# $FreeBSD$
|
|
#
|
|
# Makefile for FreeBSD
|
|
#
|
|
# RISCVTODO: copy pasted from aarch64, needs to be
|
|
# constructed from a machine description:
|
|
# config machineid
|
|
# Most changes should be made in the machine description
|
|
# /sys/riscv/conf/``machineid''
|
|
# after which you should do
|
|
# config machineid
|
|
# Generic makefile changes should be made in
|
|
# /sys/conf/Makefile.riscv
|
|
# after which config should be rerun for all machines.
|
|
#
|
|
|
|
# Which version of config(8) is required.
|
|
%VERSREQ= 600017
|
|
|
|
.if !defined(S)
|
|
S= ../../..
|
|
.endif
|
|
.include "$S/conf/kern.pre.mk"
|
|
|
|
INCLUDES+= -I$S/contrib/libfdt
|
|
|
|
# Set the ELF LMA to the address that OpenSBI's fw_jump jumps to. This allows
|
|
# us to load the kernel with the -kernel flag in QEMU without having to embed
|
|
# it inside BBL or OpenSBI's fw_payload first.
|
|
# Note: For rv32 the start address is different (0x80400000).
|
|
# We set this value using --defsym rather than hardcoding it in ldscript.riscv
|
|
# so that different kernel configs can override the load address.
|
|
KERNEL_LMA?= 0x80200000
|
|
|
|
SYSTEM_LD= @${LD} -N -m ${LD_EMULATION} -Bdynamic -T ${LDSCRIPT} ${_LDFLAGS} \
|
|
--no-warn-mismatch --warn-common --export-dynamic \
|
|
--defsym='kernel_lma=${KERNEL_LMA}' \
|
|
--dynamic-linker /red/herring \
|
|
-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
|
|
|
|
.if !empty(DDB_ENABLED)
|
|
CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
.endif
|
|
|
|
# hack because genassym.c includes sys/bus.h which includes these.
|
|
genassym.o: bus_if.h device_if.h
|
|
|
|
%BEFORE_DEPEND
|
|
|
|
%OBJS
|
|
|
|
%FILES.c
|
|
|
|
%FILES.s
|
|
|
|
%FILES.m
|
|
|
|
%CLEAN
|
|
|
|
%RULES
|
|
|
|
.include "$S/conf/kern.post.mk"
|