Angel Pons | f23ae0b | 2020-04-02 23:48:12 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 2 | |
Martin Roth | c87ab01 | 2022-11-20 19:32:51 -0700 | [diff] [blame] | 3 | #include <cpu/intel/post_codes.h> |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 4 | #include <cpu/x86/mtrr.h> |
| 5 | #include <cpu/x86/cache.h> |
| 6 | #include <cpu/x86/post_code.h> |
| 7 | |
| 8 | #define NoEvictMod_MSR 0x2e0 |
| 9 | |
| 10 | .code32 |
| 11 | .global chipset_teardown_car |
| 12 | |
| 13 | chipset_teardown_car: |
| 14 | pop %esp |
| 15 | |
Yuchen He | 1e67adb | 2023-07-25 21:28:36 +0200 | [diff] [blame^] | 16 | post_code(POSTCODE_POSTCAR_DISABLE_CACHE) |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 17 | |
| 18 | /* Disable cache. */ |
| 19 | movl %cr0, %eax |
| 20 | orl $CR0_CacheDisable, %eax |
| 21 | movl %eax, %cr0 |
| 22 | |
Yuchen He | 1e67adb | 2023-07-25 21:28:36 +0200 | [diff] [blame^] | 23 | post_code(POSTCODE_POSTCAR_DISABLE_DEF_MTRR) |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 24 | |
| 25 | /* Disable MTRR. */ |
| 26 | movl $MTRR_DEF_TYPE_MSR, %ecx |
| 27 | rdmsr |
| 28 | andl $(~MTRR_DEF_TYPE_EN), %eax |
| 29 | wrmsr |
| 30 | |
| 31 | /* Disable the no eviction run state */ |
Elyes HAOUAS | 6d772bc | 2018-12-22 09:19:49 +0100 | [diff] [blame] | 32 | movl $NoEvictMod_MSR, %ecx |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 33 | rdmsr |
Elyes HAOUAS | 6d772bc | 2018-12-22 09:19:49 +0100 | [diff] [blame] | 34 | andl $~2, %eax |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 35 | wrmsr |
Elyes HAOUAS | 6d772bc | 2018-12-22 09:19:49 +0100 | [diff] [blame] | 36 | andl $~1, %eax |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 37 | wrmsr |
| 38 | |
Yuchen He | 1e67adb | 2023-07-25 21:28:36 +0200 | [diff] [blame^] | 39 | post_code(POSTCODE_POSTCAR_TEARDOWN_DONE) |
Arthur Heymans | dd4d895 | 2018-06-03 12:04:26 +0200 | [diff] [blame] | 40 | |
| 41 | /* Return to caller. */ |
| 42 | jmp *%esp |