Rev 129 | Rev 195 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 129 | Rev 131 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | #include <typedefs.h> |
30 | #include <typedefs.h> |
31 | #include <arch/acpi/acpi.h> |
31 | #include <arch/acpi/acpi.h> |
32 | #include <arch/acpi/madt.h> |
32 | #include <arch/acpi/madt.h> |
33 | #include <arch/smp/apic.h> |
33 | #include <arch/smp/apic.h> |
34 | #include <arch/smp/smp.h> |
34 | #include <arch/smp/smp.h> |
35 | #include <mm/page.h> |
- | |
36 | #include <panic.h> |
35 | #include <panic.h> |
37 | #include <debug.h> |
36 | #include <debug.h> |
38 | #include <config.h> |
37 | #include <config.h> |
39 | 38 | ||
40 | struct acpi_madt *acpi_madt = NULL; |
39 | struct acpi_madt *acpi_madt = NULL; |
Line 109... | Line 108... | ||
109 | 108 | ||
110 | void acpi_madt_parse(void) |
109 | void acpi_madt_parse(void) |
111 | { |
110 | { |
112 | struct madt_apic_header *end = (struct madt_apic_header *) (((__u8 *) acpi_madt) + acpi_madt->header.length); |
111 | struct madt_apic_header *end = (struct madt_apic_header *) (((__u8 *) acpi_madt) + acpi_madt->header.length); |
113 | struct madt_apic_header *h = &acpi_madt->apic_header[0]; |
112 | struct madt_apic_header *h = &acpi_madt->apic_header[0]; |
114 | __u8 prev_type = 0; /* used to detect incosecutive entries */ |
113 | __u8 prev_type = 0; /* used to detect inconsecutive entries */ |
115 | 114 | ||
116 | 115 | ||
117 | l_apic = (__u32 *) acpi_madt->l_apic_address; |
116 | l_apic = (__u32 *) acpi_madt->l_apic_address; |
118 | 117 | ||
119 | while (h < end) { |
118 | while (h < end) { |
Line 175... | Line 174... | ||
175 | panic("%s entries are not consecuitve\n", entry[MADT_IO_APIC]); |
174 | panic("%s entries are not consecuitve\n", entry[MADT_IO_APIC]); |
176 | 175 | ||
177 | if (!madt_io_apic_entry_cnt++) { |
176 | if (!madt_io_apic_entry_cnt++) { |
178 | madt_io_apic_entries = ioa; |
177 | madt_io_apic_entries = ioa; |
179 | io_apic = (__u32 *) ioa->io_apic_address; |
178 | io_apic = (__u32 *) ioa->io_apic_address; |
180 | map_page_to_frame((__address) io_apic, (__address) io_apic, PAGE_NOT_CACHEABLE, 0); |
- | |
181 | } |
179 | } |
182 | else { |
180 | else { |
183 | /* currently not supported */ |
181 | /* currently not supported */ |
184 | return; |
182 | return; |
185 | } |
183 | } |