summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/assembly_entry.S9
-rw-r--r--src/arch/x86/c_start.S9
-rw-r--r--src/cpu/x86/cpu_info.S.inc10
3 files changed, 14 insertions, 14 deletions
diff --git a/src/arch/x86/assembly_entry.S b/src/arch/x86/assembly_entry.S
index b0e15dc700..4e7baf4427 100644
--- a/src/arch/x86/assembly_entry.S
+++ b/src/arch/x86/assembly_entry.S
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#include <cpu/x86/cpu_info.S.inc>
#include <rules.h>
/*
@@ -35,13 +36,7 @@ _start:
/* reset stack pointer to CAR/EARLYRAM stack */
mov $_STACK_TOP, %esp
-#if CONFIG(COOP_MULTITASKING)
- /* Push the thread pointer. */
- push $0
-#endif
- /* Push the CPU index and struct CPU */
- push $0
- push $0
+ push_cpu_info
/* clear .bss section as it is not shared */
cld
diff --git a/src/arch/x86/c_start.S b/src/arch/x86/c_start.S
index 34ed4e3665..b6375b1243 100644
--- a/src/arch/x86/c_start.S
+++ b/src/arch/x86/c_start.S
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#include <cpu/x86/cpu_info.S.inc>
#include <cpu/x86/post_code.h>
#include <arch/ram_segs.h>
@@ -76,13 +77,7 @@ _start:
movl $_estack, %esp
andl $(~(CONFIG_STACK_SIZE-1)), %esp
-#if CONFIG(COOP_MULTITASKING)
- /* Push the thread pointer. */
- push $0
-#endif
- /* Push the CPU index and struct CPU */
- push $0
- push $0
+ push_cpu_info
/*
* Now we are finished. Memory is up, data is copied and
diff --git a/src/cpu/x86/cpu_info.S.inc b/src/cpu/x86/cpu_info.S.inc
new file mode 100644
index 0000000000..62b47ca52a
--- /dev/null
+++ b/src/cpu/x86/cpu_info.S.inc
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+/* Push struct cpu_info */
+.macro push_cpu_info index=$0
+#if CONFIG(COOP_MULTITASKING)
+ push $0 /* *thread */
+#endif
+ push \index /* index */
+ push $0 /* *cpu */
+.endm