commit 24652ffd18206b8024963ba4e4a0bda580c4dd44 Author: David Abdurachmanov Date: Sun Aug 25 11:49:05 2019 -0700 Initial version Signed-off-by: David Abdurachmanov diff --git a/drop-unneeded-sectiosn-fix-string.patch b/drop-unneeded-sectiosn-fix-string.patch new file mode 100644 index 0000000..52c3d7f --- /dev/null +++ b/drop-unneeded-sectiosn-fix-string.patch @@ -0,0 +1,59 @@ +diff --git a/Makefile b/Makefile +index b7204ed..c69639e 100644 +--- a/Makefile ++++ b/Makefile +@@ -8,7 +8,7 @@ CC=${CROSSCOMPILE}gcc + LD=${CROSSCOMPILE}ld + OBJCOPY=${CROSSCOMPILE}objcopy + OBJDUMP=${CROSSCOMPILE}objdump +-CFLAGS=-I. -O2 -ggdb -march=rv64imafdc -mabi=lp64d -Wall -mcmodel=medany -mexplicit-relocs ++CFLAGS=-I. -O2 -ggdb -march=rv64imafdc -mabi=lp64d -Wall -mcmodel=medany -mexplicit-relocs -Wno-main + CCASFLAGS=-I. -mcmodel=medany -mexplicit-relocs + LDFLAGS=-nostdlib -nostartfiles + +@@ -52,7 +52,7 @@ asm: zsbl.asm fsbl.asm + + lib/version.c: .git/HEAD .git/index + echo "const char *gitid = \"$(shell git describe --always --dirty)\";" > lib/version.c +- echo "const char *gitdate = \"$(shell git log -n 1 --date=short --format=format:"%ad.%h" HEAD)\";" >> lib/version.c ++ echo "const char *gitdate = \"$(shell git log -n 1 --date=short --format=format:"%ad.%h" --no-show-signature HEAD)\";" >> lib/version.c + echo "const char *gitversion = \"$(shell git rev-parse HEAD)\";" >> lib/version.c + # echo "const char *gitstatus = \"$(shell git status -s )\";" >> lib/version.c + +@@ -73,7 +73,7 @@ fsbl/dtb.o: fsbl/ux00_fsbl.dtb + zsbl/start.o: zsbl/ux00_zsbl.dtb + + %.bin: %.elf +- $(OBJCOPY) -O binary $^ $@ ++ $(OBJCOPY) -S -R .comment -R .note.gnu.build-id -O binary $^ $@ + + %.asm: %.elf + $(OBJDUMP) -S $^ > $@ +diff --git a/lib/strlen.c b/lib/strlen.c +index 565955f..3d6addf 100644 +--- a/lib/strlen.c ++++ b/lib/strlen.c +@@ -17,6 +17,14 @@ + #include + #include + ++static __inline unsigned long detect_null(unsigned long w) ++{ ++ unsigned long mask = 0x7f7f7f7f; ++ if (sizeof (long) == 8) ++ mask = ((mask << 16) << 16) | mask; ++ return ~(((w & mask) + mask) | w | mask); ++} ++ + size_t strlen(const char *str) + { + const char *start = str; +@@ -35,7 +43,7 @@ size_t strlen(const char *str) + } while ((uintptr_t)str & (sizeof (long) - 1)); + + unsigned long *ls = (unsigned long *)str; +- while (!__libc_detect_null (*ls++)) ++ while (!detect_null (*ls++)) + ; + asm volatile ("" : "+r"(ls)); /* prevent "optimization" */ + diff --git a/freedom-u540-c000-bootloader-2019.08.25.128f282.tar.xz b/freedom-u540-c000-bootloader-2019.08.25.128f282.tar.xz new file mode 100644 index 0000000..fdaadd0 Binary files /dev/null and b/freedom-u540-c000-bootloader-2019.08.25.128f282.tar.xz differ diff --git a/freedom-u540-c000-bootloader.spec b/freedom-u540-c000-bootloader.spec new file mode 100644 index 0000000..96056b6 --- /dev/null +++ b/freedom-u540-c000-bootloader.spec @@ -0,0 +1,52 @@ +# No need for debuginfo or stripping +%global debug_package %{nil} +%global __strip /bin/true + +Name: freedom-u540-c000-bootloader +Version: 2019.08.25.128f282 +Release: 1%{?dist} +Summary: SiFive FU540 ZSBL and FSBL + +License: Apache-2.0 | GPLv2+ +URL: https://github.com/sifive/freedom-u540-c000-bootloader +# This is a full git clone copy (incl. git), --depth 1 should be enough +# This allows Makefile to extract version information from .git +Source0: %{name}-%{version}.tar.xz + +Patch0: drop-unneeded-sectiosn-fix-string.patch + +# We depend on kernel for a new DTB +BuildRequires: kernel-core +# Needed to generate version information +BuildRequires: git +# Needed to compile DTB ( ZSBL and FSBL) +BuildRequires: dtc + +BuildRequires: gcc +BuildRequires: binutils + +%description +Provides booloaders for SiFive (FU540) HiFive Unleashed board: +- Zeroth Stage Boot Loader (ZSBL) +- First Stage Boot Loader (FSBL) + +%prep +%autosetup -p1 + +%build +make CROSSCOMPILE= + +%install +install -d %{buildroot}/boot/freedom-u540-c000-bootloader/unstable/ +install -m 755 zsbl.bin %{buildroot}/boot/freedom-u540-c000-bootloader/unstable/ +install -m 755 fsbl.bin %{buildroot}/boot/freedom-u540-c000-bootloader/unstable/ + +%files +%license LICENSE +/boot/freedom-u540-c000-bootloader/unstable/{zsbl,fsbl}.bin + +%changelog +* Sun Aug 25 2019 David Abdurachmanov 2019.08.25.128f282-1 +- Add initial version + +