Subversion Repositories HelenOS-historic

Rev

Rev 1702 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1702 Rev 1780
Line 51... Line 51...
51
#define MADT_RESERVED_SKIP_BEGIN    9
51
#define MADT_RESERVED_SKIP_BEGIN    9
52
#define MADT_RESERVED_SKIP_END      127
52
#define MADT_RESERVED_SKIP_END      127
53
#define MADT_RESERVED_OEM_BEGIN     128
53
#define MADT_RESERVED_OEM_BEGIN     128
54
 
54
 
55
struct madt_apic_header {
55
struct madt_apic_header {
56
    __u8 type;
56
    uint8_t type;
57
    __u8 length;
57
    uint8_t length;
58
} __attribute__ ((packed));
58
} __attribute__ ((packed));
59
 
59
 
60
 
60
 
61
/* Multiple APIC Description Table */
61
/* Multiple APIC Description Table */
62
struct acpi_madt {
62
struct acpi_madt {
63
    struct acpi_sdt_header header;
63
    struct acpi_sdt_header header;
64
    __u32 l_apic_address;
64
    uint32_t l_apic_address;
65
    __u32 flags;
65
    uint32_t flags;
66
    struct madt_apic_header apic_header[];
66
    struct madt_apic_header apic_header[];
67
} __attribute__ ((packed));
67
} __attribute__ ((packed));
68
 
68
 
69
struct madt_l_apic {
69
struct madt_l_apic {
70
    struct madt_apic_header header;
70
    struct madt_apic_header header;
71
    __u8 acpi_id;
71
    uint8_t acpi_id;
72
    __u8 apic_id;
72
    uint8_t apic_id;
73
    __u32 flags;   
73
    uint32_t flags;
74
} __attribute__ ((packed));
74
} __attribute__ ((packed));
75
 
75
 
76
struct madt_io_apic {
76
struct madt_io_apic {
77
    struct madt_apic_header header;
77
    struct madt_apic_header header;
78
    __u8 io_apic_id;
78
    uint8_t io_apic_id;
79
    __u8 reserved;
79
    uint8_t reserved;
80
    __u32 io_apic_address; 
80
    uint32_t io_apic_address;  
81
    __u32 global_intr_base;
81
    uint32_t global_intr_base;
82
} __attribute__ ((packed));
82
} __attribute__ ((packed));
83
 
83
 
84
struct madt_intr_src_ovrd {
84
struct madt_intr_src_ovrd {
85
    struct madt_apic_header header;
85
    struct madt_apic_header header;
86
    __u8 bus;
86
    uint8_t bus;
87
    __u8 source;
87
    uint8_t source;
88
    __u32 global_int;
88
    uint32_t global_int;
89
    __u16 flags;
89
    uint16_t flags;
90
} __attribute__ ((packed));
90
} __attribute__ ((packed));
91
 
91
 
92
struct madt_nmi_src {
92
struct madt_nmi_src {
93
    struct madt_apic_header header;
93
    struct madt_apic_header header;
94
    __u16 flags;
94
    uint16_t flags;
95
    __u32 global_intr;
95
    uint32_t global_intr;
96
} __attribute__ ((packed));
96
} __attribute__ ((packed));
97
 
97
 
98
struct madt_l_apic_nmi {
98
struct madt_l_apic_nmi {
99
    struct madt_apic_header header;
99
    struct madt_apic_header header;
100
    __u8 acpi_id;
100
    uint8_t acpi_id;
101
    __u16 flags;
101
    uint16_t flags;
102
    __u8 l_apic_lint;
102
    uint8_t l_apic_lint;
103
} __attribute__ ((packed));
103
} __attribute__ ((packed));
104
 
104
 
105
struct madt_l_apic_addr_ovrd {
105
struct madt_l_apic_addr_ovrd {
106
    struct madt_apic_header header;
106
    struct madt_apic_header header;
107
    __u16 reserved;
107
    uint16_t reserved;
108
    __u64 l_apic_address;
108
    uint64_t l_apic_address;
109
} __attribute__ ((packed));
109
} __attribute__ ((packed));
110
 
110
 
111
struct madt_io_sapic {
111
struct madt_io_sapic {
112
    struct madt_apic_header header;
112
    struct madt_apic_header header;
113
    __u8 io_apic_id;
113
    uint8_t io_apic_id;
114
    __u8 reserved;
114
    uint8_t reserved;
115
    __u32 global_intr_base;
115
    uint32_t global_intr_base;
116
    __u64 io_apic_address;     
116
    uint64_t io_apic_address;      
117
} __attribute__ ((packed));
117
} __attribute__ ((packed));
118
 
118
 
119
struct madt_l_sapic {
119
struct madt_l_sapic {
120
    struct madt_apic_header header;
120
    struct madt_apic_header header;
121
    __u8 acpi_id;
121
    uint8_t acpi_id;
122
    __u8 sapic_id;
122
    uint8_t sapic_id;
123
    __u8 sapic_eid;
123
    uint8_t sapic_eid;
124
    __u8 reserved[3];
124
    uint8_t reserved[3];
125
    __u32 flags;
125
    uint32_t flags;
126
    __u32 acpi_processor_uid_value;
126
    uint32_t acpi_processor_uid_value;
127
    __u8 acpi_processor_uid_str[1];
127
    uint8_t acpi_processor_uid_str[1];
128
} __attribute__ ((packed));
128
} __attribute__ ((packed));
129
 
129
 
130
struct madt_platform_intr_src {
130
struct madt_platform_intr_src {
131
    struct madt_apic_header header;
131
    struct madt_apic_header header;
132
    __u16 flags;
132
    uint16_t flags;
133
    __u8 intr_type;
133
    uint8_t intr_type;
134
    __u8 processor_id;
134
    uint8_t processor_id;
135
    __u8 processor_eid;
135
    uint8_t processor_eid;
136
    __u8 io_sapic_vector;
136
    uint8_t io_sapic_vector;
137
    __u32 global_intr;
137
    uint32_t global_intr;
138
    __u32 platform_intr_src_flags;
138
    uint32_t platform_intr_src_flags;
139
} __attribute__ ((packed));
139
} __attribute__ ((packed));
140
 
140
 
141
extern struct acpi_madt *acpi_madt;
141
extern struct acpi_madt *acpi_madt;
142
extern struct smp_config_operations madt_config_operations;
142
extern struct smp_config_operations madt_config_operations;
143
 
143