#include #define NODE_ID 0x60 #define HT_INIT_CONTROL 0x6c #define HTIC_ColdR_Detect (1<<4) #define HTIC_BIOSR_Detect (1<<5) #define HTIC_INIT_Detect (1<<6) static int cpu_init_detected(void) { unsigned long dcl; int cpu_init; unsigned long htic; htic = pci_read_config32(PCI_DEV(0, 0x18, 0), HT_INIT_CONTROL); #if 0 print_debug("htic: "); print_debug_hex32(htic); print_debug("\r\n"); if (!(htic & HTIC_ColdR_Detect)) { print_debug("Cold Reset.\r\n"); } if ((htic & HTIC_ColdR_Detect) && !(htic & HTIC_BIOSR_Detect)) { print_debug("BIOS generated Reset.\r\n"); } if (htic & HTIC_INIT_Detect) { print_debug("Init event.\r\n"); } #endif cpu_init = (htic & HTIC_INIT_Detect); return cpu_init; } static void distinguish_cpu_resets(unsigned node_id) { uint32_t htic; device_t device; device = PCI_DEV(0, 0x18 + node_id, 0); htic = pci_read_config32(device, HT_INIT_CONTROL); htic |= HTIC_ColdR_Detect | HTIC_BIOSR_Detect | HTIC_INIT_Detect; pci_write_config32(device, HT_INIT_CONTROL, htic); }