Subversion Repositories HelenOS-historic

Rev

Rev 129 | 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
    }