diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/x86/assembly_entry.S | 9 | ||||
-rw-r--r-- | src/arch/x86/c_start.S | 9 | ||||
-rw-r--r-- | src/cpu/x86/cpu_info.S.inc | 10 |
3 files changed, 14 insertions, 14 deletions
diff --git a/src/arch/x86/assembly_entry.S b/src/arch/x86/assembly_entry.S index b0e15dc7003b..4e7baf4427cd 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 34ed4e3665cc..b6375b1243c8 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 000000000000..62b47ca52a55 --- /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 |