3 #if CONFIG_K8_REV_F_SUPPORT == 0
4 static inline int is_cpu_rev_a0(void)
6 return (cpuid_eax(1) & 0xfffef) == 0x0f00;
8 static inline int is_cpu_pre_c0(void)
10 return (cpuid_eax(1) & 0xfffef) < 0x0f48;
13 static inline int is_cpu_c0(void)
15 return (cpuid_eax(1) & 0xfffef) == 0x0f48;
18 static inline int is_cpu_pre_b3(void)
20 return (cpuid_eax(1) & 0xfffef) < 0x0f41;
23 static inline int is_cpu_b3(void)
25 return (cpuid_eax(1) & 0xfffef) == 0x0f41;
28 static inline int is_cpu_pre_d0(void)
30 return (cpuid_eax(1) & 0xfff0f) < 0x10f00;
33 static inline int is_cpu_d0(void)
35 return (cpuid_eax(1) & 0xfff0f) == 0x10f00;
39 static inline int is_cpu_pre_e0(void)
41 return (cpuid_eax(1) & 0xfff0f) < 0x20f00;
44 static inline int is_cpu_e0(void)
46 return (cpuid_eax(1) & 0xfff00) == 0x20f00;
51 static int is_e0_later_in_bsp(int nodeid)
56 if(nodeid==0) { // we don't need to do that for node 0 in core0/node0
57 return !is_cpu_pre_e0();
59 // d0 will be treated as e0 with this methods, but the d0 nb_cfg_54 always 0
61 dev = PCI_DEV(0, 0x18+nodeid,2);
62 val_old = pci_read_config32(dev, 0x80);
65 pci_write_config32(dev, 0x80, val);
66 val = pci_read_config32(dev, 0x80);
67 e0_later = !!(val & (1<<3));
68 if(e0_later) { // pre_e0 bit 3 always be 0 and can not be changed
69 pci_write_config32(dev, 0x80, val_old); // restore it
75 int is_e0_later_in_bsp(int nodeid); //defined model_fxx_init.c
80 #if CONFIG_K8_REV_F_SUPPORT == 1
82 static inline int is_cpu_pre_f0(void)
84 return (cpuid_eax(1) & 0xfff0f) < 0x40f00;
87 static inline int is_cpu_f0(void)
89 return (cpuid_eax(1) & 0xfff00) == 0x40f00;
92 static inline int is_cpu_pre_f2(void)
94 return (cpuid_eax(1) & 0xfff0f) < 0x40f02;
99 static int is_cpu_f0_in_bsp(int nodeid)
103 dev = PCI_DEV(0, 0x18+nodeid, 3);
104 dword = pci_read_config32(dev, 0xfc);
105 return (dword & 0xfff00) == 0x40f00;
107 static int is_cpu_pre_f2_in_bsp(int nodeid)
111 dev = PCI_DEV(0, 0x18+nodeid, 3);
112 dword = pci_read_config32(dev, 0xfc);
113 return (dword & 0xfff0f) < 0x40f02;
116 int is_cpu_f0_in_bsp(int nodeid); // defined in model_fxx_init.c