From 84eb61c32c4ca3f01e17cb4a4e9287821646f5cb Mon Sep 17 00:00:00 2001 From: Felix Held Date: Mon, 23 Nov 2020 16:54:05 +0100 Subject: soc/amd: move assembly part of non-CAR bootblock to common directory There will be more files added to the common non-CAR Makefile.inc, so use an ifeq statement there. Change-Id: I1f71954d27fbf10725387a0e95bc57f5040024cc Signed-off-by: Felix Held Reviewed-on: https://review.coreboot.org/c/coreboot/+/47880 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth --- src/soc/amd/common/block/cpu/Makefile.inc | 1 + src/soc/amd/common/block/cpu/noncar/Makefile.inc | 1 + src/soc/amd/common/block/cpu/noncar/pre_c.S | 54 ++++++++++++++++++++++++ src/soc/amd/picasso/Makefile.inc | 1 - src/soc/amd/picasso/bootblock/pre_c.S | 54 ------------------------ 5 files changed, 56 insertions(+), 55 deletions(-) create mode 100644 src/soc/amd/common/block/cpu/noncar/Makefile.inc create mode 100644 src/soc/amd/common/block/cpu/noncar/pre_c.S delete mode 100644 src/soc/amd/picasso/bootblock/pre_c.S (limited to 'src/soc') diff --git a/src/soc/amd/common/block/cpu/Makefile.inc b/src/soc/amd/common/block/cpu/Makefile.inc index df2ccfaa2e..6298f3b746 100644 --- a/src/soc/amd/common/block/cpu/Makefile.inc +++ b/src/soc/amd/common/block/cpu/Makefile.inc @@ -1 +1,2 @@ subdirs-$(CONFIG_SOC_AMD_COMMON_BLOCK_CAR) += car +subdirs-$(CONFIG_SOC_AMD_COMMON_BLOCK_NONCAR) += noncar diff --git a/src/soc/amd/common/block/cpu/noncar/Makefile.inc b/src/soc/amd/common/block/cpu/noncar/Makefile.inc new file mode 100644 index 0000000000..d6b8b52711 --- /dev/null +++ b/src/soc/amd/common/block/cpu/noncar/Makefile.inc @@ -0,0 +1 @@ +bootblock-y += pre_c.S diff --git a/src/soc/amd/common/block/cpu/noncar/pre_c.S b/src/soc/amd/common/block/cpu/noncar/pre_c.S new file mode 100644 index 0000000000..6fae1ed1cb --- /dev/null +++ b/src/soc/amd/common/block/cpu/noncar/pre_c.S @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include + +.global bootblock_resume_entry +bootblock_resume_entry: + post_code(0xb0) + + /* Get an early timestamp */ + rdtsc + movd %eax, %mm1 + movd %edx, %mm2 + + /* Fall through to bootblock_pre_c_entry */ + +/* + * on entry: + * mm0: BIST (ignored) + * mm2_mm1: timestamp at bootblock_protected_mode_entry + */ + +.global bootblock_pre_c_entry +bootblock_pre_c_entry: + post_code(0xa0) + + /* Clear .bss section */ + cld + xor %eax, %eax + movl $(_ebss), %ecx + movl $(_bss), %edi + sub %edi, %ecx + shrl $2, %ecx + rep stosl + + movl $_eearlyram_stack, %esp + + /* Align the stack and keep aligned for call to bootblock_c_entry() */ + and $0xfffffff0, %esp + sub $8, %esp + + movd %mm2, %eax + pushl %eax /* tsc[63:32] */ + movd %mm1, %eax + pushl %eax /* tsc[31:0] */ + + post_code(0xa2) + + call bootblock_c_entry + /* Never reached */ + +.halt_forever: + post_code(POST_DEAD_CODE) + hlt + jmp .halt_forever diff --git a/src/soc/amd/picasso/Makefile.inc b/src/soc/amd/picasso/Makefile.inc index 6ec4cd1151..5f4ab9bddb 100644 --- a/src/soc/amd/picasso/Makefile.inc +++ b/src/soc/amd/picasso/Makefile.inc @@ -11,7 +11,6 @@ subdirs-y += ../../../cpu/x86/pae subdirs-y += ../../../cpu/x86/smm subdirs-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += psp_verstage -bootblock-y += bootblock/pre_c.S bootblock-y += bootblock/bootblock.c bootblock-y += aoac.c bootblock-y += southbridge.c diff --git a/src/soc/amd/picasso/bootblock/pre_c.S b/src/soc/amd/picasso/bootblock/pre_c.S deleted file mode 100644 index 6fae1ed1cb..0000000000 --- a/src/soc/amd/picasso/bootblock/pre_c.S +++ /dev/null @@ -1,54 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include - -.global bootblock_resume_entry -bootblock_resume_entry: - post_code(0xb0) - - /* Get an early timestamp */ - rdtsc - movd %eax, %mm1 - movd %edx, %mm2 - - /* Fall through to bootblock_pre_c_entry */ - -/* - * on entry: - * mm0: BIST (ignored) - * mm2_mm1: timestamp at bootblock_protected_mode_entry - */ - -.global bootblock_pre_c_entry -bootblock_pre_c_entry: - post_code(0xa0) - - /* Clear .bss section */ - cld - xor %eax, %eax - movl $(_ebss), %ecx - movl $(_bss), %edi - sub %edi, %ecx - shrl $2, %ecx - rep stosl - - movl $_eearlyram_stack, %esp - - /* Align the stack and keep aligned for call to bootblock_c_entry() */ - and $0xfffffff0, %esp - sub $8, %esp - - movd %mm2, %eax - pushl %eax /* tsc[63:32] */ - movd %mm1, %eax - pushl %eax /* tsc[31:0] */ - - post_code(0xa2) - - call bootblock_c_entry - /* Never reached */ - -.halt_forever: - post_code(POST_DEAD_CODE) - hlt - jmp .halt_forever -- cgit v1.2.3