From 5631c9c892f7f04b5ec56fa60ad8039803e0d5ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20Z=C3=A1rev=C3=BAcky?= Date: Sat, 29 Jun 2019 15:33:25 +0200 Subject: [PATCH] sparc64 boot --- boot/arch/sparc64/Makefile.inc | 31 ++----------------------------- boot/arch/sparc64/_link.ld.in | 2 +- boot/arch/sparc64/meson.build | 25 +++++++++++++++++++++++++ boot/meson.build | 6 +++++- boot/silo/build_dist.sh | 16 ++++++++++++++++ boot/{yaboot => silo}/meson.build | 24 ++++++++++-------------- boot/yaboot/meson.build | 7 +++---- meson/arch/sparc64/meson.build | 3 ++- tools/ew.py | 2 +- 9 files changed, 65 insertions(+), 51 deletions(-) create mode 100644 boot/arch/sparc64/meson.build create mode 100644 boot/silo/build_dist.sh copy boot/{yaboot => silo}/meson.build (50%) diff --git a/boot/arch/sparc64/Makefile.inc b/boot/arch/sparc64/Makefile.inc index baa9c07b9..e60e0886d 100644 --- a/boot/arch/sparc64/Makefile.inc +++ b/boot/arch/sparc64/Makefile.inc @@ -26,33 +26,6 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -BOOT_OUTPUT = image.boot -POST_OUTPUT = $(ROOT_PATH)/image.iso -POSTBUILD = Makefile.silo +BUILD = Makefile.empty +POSTBUILD = Makefile.empty -BFD_NAME = elf64-sparc -BFD_OUTPUT = $(BFD_NAME) - -BITS = 64 -ENDIANESS = BE -EXTRA_CFLAGS = -mcpu=ultrasparc -m64 -mno-fpu -mcmodel=medlow - -SOURCES = \ - arch/$(BARCH)/src/asm.S \ - arch/$(BARCH)/src/main.c \ - arch/$(BARCH)/src/ofw.c \ - $(COMPS).o \ - genarch/src/ofw.c \ - genarch/src/ofw_tree.c \ - generic/src/balloc.c \ - generic/src/memstr.c \ - generic/src/printf_core.c \ - generic/src/vprintf.c \ - generic/src/printf.c \ - generic/src/str.c \ - generic/src/version.c \ - generic/src/inflate.c \ - generic/src/gzip.c \ - generic/src/tar.c \ - generic/src/kernel.c \ - generic/src/payload.c diff --git a/boot/arch/sparc64/_link.ld.in b/boot/arch/sparc64/_link.ld.in index 84bbceb28..a48bd1515 100644 --- a/boot/arch/sparc64/_link.ld.in +++ b/boot/arch/sparc64/_link.ld.in @@ -5,7 +5,7 @@ SECTIONS { .boot : { loader_start = .; *(BOOTSTRAP); - *(.text); + *(.text.*); *(.data); /* initialized data */ *(.rodata); diff --git a/boot/arch/sparc64/meson.build b/boot/arch/sparc64/meson.build new file mode 100644 index 000000000..066f0160d --- /dev/null +++ b/boot/arch/sparc64/meson.build @@ -0,0 +1,25 @@ +BUILD = true +POSTBUILD = 'silo' +POST_OUTPUT = 'image.iso' +boot_image_format = 'elf' + +boot_src = files( + 'src/asm.S', + 'src/main.c', + 'src/ofw.c', + + '../../genarch/src/ofw.c', + '../../genarch/src/ofw_tree.c', + '../../generic/src/balloc.c', + '../../generic/src/memstr.c', + '../../generic/src/printf_core.c', + '../../generic/src/vprintf.c', + '../../generic/src/printf.c', + '../../generic/src/str.c', + '../../generic/src/version.c', + '../../generic/src/inflate.c', + '../../generic/src/gzip.c', + '../../generic/src/tar.c', + '../../generic/src/kernel.c', + '../../generic/src/payload.c', +) diff --git a/boot/meson.build b/boot/meson.build index c6a28adbf..de8dd7d81 100644 --- a/boot/meson.build +++ b/boot/meson.build @@ -1,6 +1,6 @@ subdir('arch' / BARCH) -if POSTBUILD == 'uimage' +if POSTBUILD == 'uboot' boot_image_format = 'binary' endif @@ -171,6 +171,10 @@ if POSTBUILD == 'yaboot' subdir('yaboot') endif +if POSTBUILD == 'silo' + subdir('silo') +endif + if POSTBUILD == 'uboot' IMAGE_NAME = 'HelenOS-' + HELENOS_RELEASE diff --git a/boot/silo/build_dist.sh b/boot/silo/build_dist.sh new file mode 100644 index 000000000..a76832cad --- /dev/null +++ b/boot/silo/build_dist.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOOT_OUTPUT="$1" +SRCDIR="$2" +DESTDIR="$3" + +rm -rf ${DESTDIR} + +mkdir -p ${DESTDIR}/boot +cp -t ${DESTDIR}/boot \ + ${SRCDIR}/a.out/isofs.b \ + ${SRCDIR}/a.out/second.b \ + ${SRCDIR}/silo.conf + +mkdir -p ${DESTDIR}/HelenOS +cp ${BOOT_OUTPUT} ${DESTDIR}/HelenOS/image.boot diff --git a/boot/yaboot/meson.build b/boot/silo/meson.build similarity index 50% copy from boot/yaboot/meson.build copy to boot/silo/meson.build index 415991239..67b01120c 100644 --- a/boot/yaboot/meson.build +++ b/boot/silo/meson.build @@ -1,28 +1,24 @@ - -yaboot_distdir = custom_target('yaboot_dist', - output: 'yaboot_dist', +distdir = custom_target('distdir', + output: 'distdir', input: [ 'build_dist.sh', boot_image, - 'ofboot.b', - 'bootinfo.txt', - 'yaboot', - 'yaboot.conf', + 'a.out/isofs.b', + 'a.out/second.b', + 'silo.conf' + ], command: [ sh, '@INPUT0@', '@INPUT1@', meson.current_source_dir(), '@OUTPUT@' ], ) image_iso = custom_target('image.iso', output: 'image.iso', - input: [ yaboot_distdir, 'maps' ], + input: [ distdir, 'a.out/isofs.b' ], command: [ genisoimage, - '-hfs', - '-part', - '-map', '@INPUT1@', - '-no-desktop', - '-hfs-volid', 'HelenOS', - '-hfs-bless', '@INPUT0@/boot', + '-f', + '-G', '@INPUT1@', + '-B', '...', '-r', '-o', '@OUTPUT@', '@INPUT0@', diff --git a/boot/yaboot/meson.build b/boot/yaboot/meson.build index 415991239..ec791ea3f 100644 --- a/boot/yaboot/meson.build +++ b/boot/yaboot/meson.build @@ -1,6 +1,5 @@ - -yaboot_distdir = custom_target('yaboot_dist', - output: 'yaboot_dist', +distdir = custom_target('distdir', + output: 'distdir', input: [ 'build_dist.sh', boot_image, @@ -14,7 +13,7 @@ yaboot_distdir = custom_target('yaboot_dist', image_iso = custom_target('image.iso', output: 'image.iso', - input: [ yaboot_distdir, 'maps' ], + input: [ distdir, 'maps' ], command: [ genisoimage, '-hfs', diff --git a/meson/arch/sparc64/meson.build b/meson/arch/sparc64/meson.build index 79887854c..998ddb273 100644 --- a/meson/arch/sparc64/meson.build +++ b/meson/arch/sparc64/meson.build @@ -16,6 +16,7 @@ endif arch_kernel_c_args = [ '-D__BE__', '-m64', '-mcmodel=medlow', '-mcpu=ultrasparc', '-mno-fpu' ] +arch_boot_c_args = arch_kernel_c_args if PROCESSOR == 'us' arch_kernel_c_args += [ @@ -35,7 +36,7 @@ elif PROCESSOR == 'sun4v' ] endif - +arch_boot_link_args = [] arch_kernel_link_args = [ '-nostdlib', '-Wl,-no-check-sections' ] arch_uspace_link_args = [ '-nostdlib', '-lgcc' ] diff --git a/tools/ew.py b/tools/ew.py index af7f2ed41..6be4a51d3 100755 --- a/tools/ew.py +++ b/tools/ew.py @@ -380,7 +380,7 @@ emulators = { }, 'sun4v' : { 'run' : qemu_run, - 'image' : '-drive if=pflash,readonly=on,file=image.iso', + 'image' : '-drive if=pflash,readonly=on,file=build/image.iso', 'audio' : False, 'console' : True, 'net' : False, -- 2.11.4.GIT