9600 was a standard baud rate decades ago, but 115200 is now more common so choose defaults that are useful to the largest number of users. Note that boot0sio does not support rates above 9600 so it remains unchanged. Reviewed by: bz, imp, manu Relnotes: Yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36295
94 lines
2.2 KiB
Makefile
94 lines
2.2 KiB
Makefile
|
|
.include <bsd.init.mk>
|
|
|
|
FILES= boot boot1 boot2
|
|
|
|
# A value of 0x80 enables LBA support.
|
|
BOOT_BOOT1_FLAGS?= 0x80
|
|
|
|
BOOT_COMCONSOLE_PORT?= 0x3f8
|
|
BOOT_COMCONSOLE_SPEED?= 115200
|
|
B2SIOFMT?= 0x3
|
|
|
|
REL1= 0x700
|
|
ORG1= 0x7c00
|
|
ORG2= 0x2000
|
|
|
|
# Decide level of UFS support.
|
|
BOOT2_UFS?= UFS1_AND_UFS2
|
|
#BOOT2_UFS?= UFS2_ONLY
|
|
#BOOT2_UFS?= UFS1_ONLY
|
|
|
|
CFLAGS+=-fomit-frame-pointer \
|
|
-mrtd \
|
|
-mregparm=3 \
|
|
-D${BOOT2_UFS} \
|
|
-DFLAGS=${BOOT_BOOT1_FLAGS} \
|
|
-DSIOPRT=${BOOT_COMCONSOLE_PORT} \
|
|
-DSIOFMT=${B2SIOFMT} \
|
|
-DSIOSPD=${BOOT_COMCONSOLE_SPEED} \
|
|
-I${LDRSRC} \
|
|
-Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \
|
|
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
|
|
-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings
|
|
|
|
CFLAGS.gcc+= -Os \
|
|
-fno-asynchronous-unwind-tables \
|
|
--param max-inline-insns-single=100
|
|
|
|
CFLAGS.clang+= -Oz ${CLANG_OPT_SMALL}
|
|
|
|
LD_FLAGS+=${LD_FLAGS_BIN}
|
|
|
|
CLEANFILES+= boot
|
|
|
|
boot: boot1 boot2
|
|
cat boot1 boot2 > boot
|
|
|
|
CLEANFILES+= boot1 boot1.out boot1.o
|
|
|
|
boot1: boot1.out
|
|
${OBJCOPY} -S -O binary boot1.out ${.TARGET}
|
|
|
|
boot1.out: boot1.o
|
|
${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} boot1.o
|
|
|
|
CLEANFILES+= boot2 boot2.ld boot2.ldr boot2.bin boot2.out boot2.o \
|
|
boot2.h sio.o
|
|
|
|
BOOT2SIZE= 7680
|
|
|
|
boot2: boot2.ld
|
|
@set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \
|
|
echo "$$x bytes available"; test $$x -ge 0
|
|
${DD} if=${.ALLSRC} of=${.TARGET} bs=${BOOT2SIZE} conv=sync
|
|
|
|
boot2.ld: boot2.ldr boot2.bin ${BTXKERN}
|
|
btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l boot2.ldr \
|
|
-o ${.TARGET} -P 1 boot2.bin
|
|
|
|
boot2.ldr:
|
|
${DD} if=/dev/zero of=${.TARGET} bs=512 count=1
|
|
|
|
boot2.bin: boot2.out
|
|
${OBJCOPY} -S -O binary boot2.out ${.TARGET}
|
|
|
|
# For __ashldi3
|
|
.PATH: ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
|
|
CFLAGS.ashldi3.c= -Wno-missing-prototypes -Wno-missing-declarations
|
|
CLEANFILES+= ashldi3.o
|
|
|
|
boot2.out: ${BTXCRT} boot2.o sio.o ashldi3.o
|
|
${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC}
|
|
|
|
SRCS= boot2.c boot2.h
|
|
|
|
boot2.h: boot1.out
|
|
${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \
|
|
{ x = $$1 - ORG1; \
|
|
printf("#define XREADORG %#x\n", REL1 + x) }' \
|
|
ORG1=`printf "%d" ${ORG1}` \
|
|
REL1=`printf "%d" ${REL1}` > ${.TARGET}
|
|
|
|
.include <bsd.prog.mk>
|