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>
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 1b08af2..a1e73f9 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 @@
 	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 @@
 	.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