In 2007 Adrian Reber suggested that we drop ASSEMBLY in favor of __ASSEMBLER__.
[coreboot.git] / src / include / cpu / amd / mtrr.h
1 #ifndef CPU_AMD_MTRR_H
2 #define CPU_AMD_MTRR_H
3
4 #define IORR_FIRST 0xC0010016
5 #define IORR_LAST  0xC0010019
6
7 #define MTRR_READ_MEM                   (1 << 4)
8 #define MTRR_WRITE_MEM                  (1 << 3)
9
10 #define SYSCFG_MSR                      0xC0010010
11 #define SYSCFG_MSR_TOM2WB               (1 << 22)
12 #define SYSCFG_MSR_TOM2En               (1 << 21)
13 #define SYSCFG_MSR_MtrrVarDramEn        (1 << 20)
14 #define SYSCFG_MSR_MtrrFixDramModEn     (1 << 19)
15 #define SYSCFG_MSR_MtrrFixDramEn        (1 << 18)
16 #define SYSCFG_MSR_UcLockEn             (1 << 17)
17 #define SYSCFG_MSR_ChxToDirtyDis        (1 << 16)
18 #define SYSCFG_MSR_ClVicBlkEn           (1 << 11)
19 #define SYSCFG_MSR_SetDirtyEnO          (1 << 10)
20 #define SYSCFG_MSR_SetDirtyEnS          (1 <<  9)
21 #define SYSCFG_MSR_SetDirtyEnE          (1 <<  8)
22 #define SYSCFG_MSR_SysVicLimitMask      ((1 << 8) - (1 << 5))
23 #define SYSCFG_MSR_SysAckLimitMask      ((1 << 5) - (1 << 0))
24
25 #define IORRBase_MSR(reg) (0xC0010016 + 2 * (reg))
26 #define IORRMask_MSR(reg) (0xC0010016 + 2 * (reg) + 1)
27
28 #define TOP_MEM_MSR                     0xC001001A
29 #define TOP_MEM2_MSR                    0xC001001D
30 #define TOP_MEM                         TOP_MEM_MSR
31 #define TOP_MEM2                        TOP_MEM2_MSR
32
33 #define TOP_MEM_MASK                    0x007fffff
34 #define TOP_MEM_MASK_KB                 (TOP_MEM_MASK >> 10)
35
36 #if !defined(__PRE_RAM__) && !defined(__ASSEMBLER__)
37 void amd_setup_mtrrs(void);
38 #endif
39
40 #endif /* CPU_AMD_MTRR_H */