[PATCH 6/9] bsps/x86_64: Use interrupt stack for init stack

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Nov 16 14:45:48 UTC 2018


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", at 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 <amaan.cheval at gmail.com>
- *
- * 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 <bsp.h>
-#include <start.h>
-#include <bsp/bootcard.h>
-
-// 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
-- 
2.16.4



More information about the devel mailing list