Subversion Repositories HelenOS-historic

Rev

Rev 33 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 33 Rev 34
Line 24... Line 24...
24
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 */
27
 */
28
 
28
 
-
 
29
#include <arch/types.h>
29
#include <arch/acpi/acpi.h>
30
#include <arch/acpi/acpi.h>
30
#include <arch/acpi/madt.h>
31
#include <arch/acpi/madt.h>
-
 
32
#include <arch/smp/apic.h>
31
 
33
 
32
struct acpi_madt *acpi_madt = NULL;
34
struct acpi_madt *acpi_madt = NULL;
-
 
35
 
-
 
36
#ifdef __SMP__
-
 
37
 
-
 
38
char *entry[] = {
-
 
39
    "L_APIC",
-
 
40
    "IO_APIC",
-
 
41
    "INTR_SRC_OVRD",
-
 
42
    "NMI_SRC",
-
 
43
    "L_APIC_NMI",
-
 
44
    "L_APIC_ADDR_OVRD",
-
 
45
    "IO_SAPIC",
-
 
46
    "L_SAPIC",
-
 
47
    "PLATFORM_INTR_SRC"
-
 
48
};
-
 
49
 
-
 
50
void acpi_madt_parse(void)
-
 
51
{
-
 
52
    struct madt_apic_header *end = (struct madt_apic_header *) (((__u8 *) acpi_madt) + acpi_madt->header.length);
-
 
53
    struct madt_apic_header *h = &acpi_madt->apic_header[0];
-
 
54
 
-
 
55
    l_apic = (__u32 *) acpi_madt->l_apic_address;
-
 
56
 
-
 
57
    while (h < end) {
-
 
58
        switch (h->type) {
-
 
59
            case MADT_L_APIC:
-
 
60
            case MADT_IO_APIC:
-
 
61
            case MADT_INTR_SRC_OVRD:
-
 
62
            case MADT_NMI_SRC:
-
 
63
            case MADT_L_APIC_NMI:
-
 
64
            case MADT_L_APIC_ADDR_OVRD:
-
 
65
            case MADT_IO_SAPIC:
-
 
66
            case MADT_L_SAPIC:
-
 
67
            case MADT_PLATFORM_INTR_SRC:
-
 
68
                printf("MADT: skipping %s entry (type=%d)\n", entry[h->type], h->type);
-
 
69
                break;
-
 
70
 
-
 
71
            default:
-
 
72
                if (h->type >= MADT_RESERVED_SKIP_BEGIN && h->type <= MADT_RESERVED_SKIP_END) {
-
 
73
                    printf("MADT: skipping reserved entry (type=%d)\n", h->type);
-
 
74
                }
-
 
75
                if (h->type >= MADT_RESERVED_OEM_BEGIN) {
-
 
76
                    printf("MADT: skipping OEM entry (type=%d)\n", h->type);
-
 
77
                }
-
 
78
                break;
-
 
79
        }
-
 
80
        h = (struct madt_apic_header *) (((__u8 *) h) + h->length);
-
 
81
    }
-
 
82
 
-
 
83
}
-
 
84
 
-
 
85
#endif /* __SMP__ */