From 5f5bbd10fbf8dc48e107c1b9a3fe548b13f43390 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 16 Nov 2018 08:55:30 +0100 Subject: bsps/x86_64: Use interrupt stack for init stack Update #3459. --- bsps/x86_64/amd64/start/linkcmds | 1 + bsps/x86_64/amd64/start/start.S | 41 +++++++++++++++++++++++++++++++ bsps/x86_64/amd64/start/start.c | 36 --------------------------- c/src/lib/libbsp/x86_64/amd64/Makefile.am | 7 ++++-- 4 files changed, 47 insertions(+), 38 deletions(-) create mode 100644 bsps/x86_64/amd64/start/start.S delete mode 100644 bsps/x86_64/amd64/start/start.c diff --git a/bsps/x86_64/amd64/start/linkcmds b/bsps/x86_64/amd64/start/linkcmds index ecb4a2b835..103e1fb27d 100644 --- a/bsps/x86_64/amd64/start/linkcmds +++ b/bsps/x86_64/amd64/start/linkcmds @@ -16,6 +16,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) +STARTUP(start.o) ENTRY(_start) HeapSize = DEFINED(HeapSize) ? HeapSize : diff --git a/bsps/x86_64/amd64/start/start.S b/bsps/x86_64/amd64/start/start.S new file mode 100644 index 0000000000..e1a50e05db --- /dev/null +++ b/bsps/x86_64/amd64/start/start.S @@ -0,0 +1,41 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (C) 2018 embedded brains GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + + .text + .section .text._start,"ax",@progbits + .p2align 4,,15 + .globl _start + .type _start, @function +_start: + .cfi_startproc + movabsq $_ISR_Stack_area_end, %rsp + subq $8, %rsp + .cfi_def_cfa_offset 16 + xorl %edi, %edi + movabsq $boot_card, %rax + call *%rax + .cfi_endproc diff --git a/bsps/x86_64/amd64/start/start.c b/bsps/x86_64/amd64/start/start.c deleted file mode 100644 index 2dfeb7ebb8..0000000000 --- a/bsps/x86_64/amd64/start/start.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2018. - * Amaan Cheval - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include - -// XXX: _start can pass boot arguments to boot_card -// https://lists.rtems.org/pipermail/devel/2018-June/022123.html -void _start(void) -{ - boot_card(""); -} diff --git a/c/src/lib/libbsp/x86_64/amd64/Makefile.am b/c/src/lib/libbsp/x86_64/amd64/Makefile.am index eb08838279..fb2a47d24c 100644 --- a/c/src/lib/libbsp/x86_64/amd64/Makefile.am +++ b/c/src/lib/libbsp/x86_64/amd64/Makefile.am @@ -7,7 +7,11 @@ dist_project_lib_DATA = ../../../../../../bsps/x86_64/amd64/start/bsp_specs noinst_PROGRAMS = -project_lib_DATA = linkcmds +start.$(OBJEXT): ../../../../../../bsps/x86_64/amd64/start/start.S + $(CPPASCOMPILE) -o $@ -c $< +project_lib_DATA = start.$(OBJEXT) + +project_lib_DATA += linkcmds project_lib_LIBRARIES = librtemsbsp.a librtemsbsp_a_SOURCES = @@ -22,7 +26,6 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspfatal-default.c # librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspgetworkarea-default.c librtemsbsp_a_SOURCES += ../../../../../../bsps/x86_64/amd64/start/bspstart.c -librtemsbsp_a_SOURCES += ../../../../../../bsps/x86_64/amd64/start/start.c librtemsbsp_a_SOURCES += ../../../../../../bsps/x86_64/amd64/start/page.c librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/sbrk.c librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/getentropy/getentropy-cpucounter.c -- cgit v1.2.3