summaryrefslogtreecommitdiff
path: root/src/soc/intel
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2022-11-08 15:06:42 +0100
committerFelix Held <felix-coreboot@felixheld.de>2022-12-16 17:20:32 +0000
commit2834d98f523e5580642fdf92723045edb3a8b0ec (patch)
tree83225e03cd7f7c2fa70149ac8af6a5f045dd9bd0 /src/soc/intel
parent1c9a8d8083f04090a5caedfbb05c32d61b035897 (diff)
cpu/intel: Fix clearing MTRR for clang 64bit
Clang generates R_X86_64_32S symbols that get truncated. TESTED: - prodrive/hermes boots with GCC and clang - MTRR are properly cleared (tested by filling in both MTRR_FIX_64K_00000 and MTRR_FIX_4K_F8000 before clearing) Change-Id: I6a5139f7029b6f35b44377f105dded06f6d9cbf9 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/69388 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/soc/intel')
-rw-r--r--src/soc/intel/common/block/cpu/car/cache_as_ram.S11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/soc/intel/common/block/cpu/car/cache_as_ram.S b/src/soc/intel/common/block/cpu/car/cache_as_ram.S
index 1b08af2f5c..a1e73f970a 100644
--- a/src/soc/intel/common/block/cpu/car/cache_as_ram.S
+++ b/src/soc/intel/common/block/cpu/car/cache_as_ram.S
@@ -101,15 +101,16 @@ no_reset:
post_code(POST_SOC_NO_RESET)
/* Clear/disable fixed MTRRs */
- mov $fixed_mtrr_list_size, %ebx
+ mov $fixed_mtrr_list, %ebx
xor %eax, %eax
xor %edx, %edx
clear_fixed_mtrr:
- add $-2, %ebx
- movzwl fixed_mtrr_list(%ebx), %ecx
+ movzwl (%ebx), %ecx
wrmsr
- jnz clear_fixed_mtrr
+ add $2, %ebx
+ cmp $fixed_mtrr_list_end, %ebx
+ jl clear_fixed_mtrr
post_code(POST_SOC_CLEAR_FIXED_MTRRS)
@@ -317,7 +318,7 @@ fixed_mtrr_list:
.word MTRR_FIX_4K_E8000
.word MTRR_FIX_4K_F0000
.word MTRR_FIX_4K_F8000
-fixed_mtrr_list_size = . - fixed_mtrr_list
+fixed_mtrr_list_end:
#if CONFIG(INTEL_CAR_NEM)
.global car_nem