15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * <Insert copyright here : it must be BSD-like so everyone can use it> 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Author: Erich Boleyn <erich@uruk.org> http://www.uruk.org/~erich/ 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Header file implementing Intel MultiProcessor Specification (MPS) 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * version 1.1 and 1.4 SMP hardware control for Intel Architecture CPUs, 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * with hooks for running correctly on a standard PC without the hardware. 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This file was created from information in the Intel MPS version 1.4 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * document, order number 242016-004, which can be ordered from the 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Intel literature center. 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef _SMP_IMPS_H 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define _SMP_IMPS_H 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* make sure "apic.h" is included */ 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef _APIC_H 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#error Must include "apic.h" before "smp-imps.h" 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* !_APIC_H */ 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Defines used. 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef IMPS_DEBUG 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_DEBUG_PRINT(x) KERNEL_PRINT(x) 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else /* !IMPS_DEBUG */ 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_DEBUG_PRINT(x) 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* !IMPS_DEBUG */ 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_MAX_CPUS APIC_BROADCAST_ID 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Defines representing limitations on values usable in different 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * situations. This mostly depends on whether the APICs are old 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (82489DX) or new (SIO or Pentium/Pentium Pro integrated APICs). 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * NOTE: It appears that the APICs must either be all old or all new, 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * or broadcasts won't work right. 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * NOTE #2: Given that, the maximum ID which can be sent to predictably 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * is 14 for new APICs and 254 for old APICs. So, this all implies that 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * a maximum of 15 processors is supported with the new APICs, and a 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * maximum of 255 processors with the old APICs. 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_APIC_ID(x) \ 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ( imps_any_new_apics ? APIC_NEW_ID(x) : APIC_OLD_ID(x) ) 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This is the value that must be in the "sig" member of the MP 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Floating Pointer Structure. 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_FPS_SIGNATURE ('_' | ('M'<<8) | ('P'<<16) | ('_'<<24)) 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_FPS_IMCRP_BIT 0x80 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_FPS_DEFAULT_MAX 7 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This is the value that must be in the "sig" member of the MP 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Configuration Table Header. 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_CTH_SIGNATURE ('P' | ('C'<<8) | ('M'<<16) | ('P'<<24)) 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * These are the "type" values for Base MP Configuration Table entries. 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_FLAG_ENABLED 1 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_BCT_PROCESSOR 0 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_CPUFLAG_BOOT 2 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_BCT_BUS 1 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_BCT_IOAPIC 2 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_BCT_IO_INTERRUPT 3 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_BCT_LOCAL_INTERRUPT 4 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_INT_INT 0 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_INT_NMI 1 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_INT_SMI 2 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_INT_EXTINT 3 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Typedefs and data item definitions done here. 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_fps imps_fps; /* MP floating pointer structure */ 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_cth imps_cth; /* MP configuration table header */ 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_processor imps_processor; 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_bus imps_bus; 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_ioapic imps_ioapic; 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct imps_interrupt imps_interrupt; 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Data structures defined here 955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * MP Floating Pointer Structure (fps) 995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Look at page 4-3 of the MP spec for the starting definitions of 1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * this structure. 1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_fps 1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned sig; 1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project imps_cth *cth_ptr; 1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char length; 1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char spec_rev; 1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char checksum; 1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char feature_info[5]; 1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * MP Configuration Table Header (cth) 1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Look at page 4-5 of the MP spec for the starting definitions of 1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * this structure. 1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_cth 1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned sig; 1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short base_length; 1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char spec_rev; 1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char checksum; 1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char oem_id[8]; 1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char prod_id[12]; 1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned oem_table_ptr; 1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short oem_table_size; 1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short entry_count; 1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned lapic_addr; 1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short extended_length; 1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char extended_checksum; 1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char reserved[1]; 1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Base MP Configuration Table Types. They are sorted according to 1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * type (i.e. all of type 0 come first, etc.). Look on page 4-6 for 1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the start of the descriptions. 1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_processor 1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char type; /* must be 0 */ 1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char apic_id; 1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char apic_ver; 1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char flags; 1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned signature; 1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned features; 1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char reserved[8]; 1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_bus 1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char type; /* must be 1 */ 1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char id; 1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char bus_type[6]; 1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_ioapic 1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char type; /* must be 2 */ 1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char id; 1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char ver; 1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char flags; 1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned addr; 1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct imps_interrupt 1705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char type; /* must be 3 or 4 */ 1725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char int_type; 1735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short flags; 1745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char source_bus_id; 1755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char source_bus_irq; 1765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char dest_apic_id; 1775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char dest_apic_intin; 1785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project }; 1795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Exported globals here. 1835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This is the primary function for probing for Intel MPS 1.1/1.4 1875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * compatible hardware and BIOS information. While probing the CPUs 1885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * information returned from the BIOS, this also starts up each CPU 1895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * and gets it ready for use. 1905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Call this during the early stages of OS startup, before memory can 1925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * be messed up. 1935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Returns 1 if IMPS information was found and is valid, else 0. 1955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint imps_probe (void); 1985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Defines that use variables 2025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_LAPIC_READ(x) (*((volatile unsigned *) (imps_lapic_addr+(x)))) 2055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IMPS_LAPIC_WRITE(x, y) \ 2065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project (*((volatile unsigned *) (imps_lapic_addr+(x))) = (y)) 2075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* !_SMP_IMPS_H */ 209