| #ifndef _ASM_X86_DMI_H |
| #define _ASM_X86_DMI_H |
| |
| #include <asm/io.h> |
| |
| #ifdef CONFIG_X86_32 |
| |
| /* Use early IO mappings for DMI because it's initialized early */ |
| #define dmi_ioremap bt_ioremap |
| #define dmi_iounmap bt_iounmap |
| #define dmi_alloc alloc_bootmem |
| |
| #else /* CONFIG_X86_32 */ |
| |
| #define DMI_MAX_DATA 2048 |
| |
| extern int dmi_alloc_index; |
| extern char dmi_alloc_data[DMI_MAX_DATA]; |
| |
| /* This is so early that there is no good way to allocate dynamic memory. |
| Allocate data in an BSS array. */ |
| static inline void *dmi_alloc(unsigned len) |
| { |
| int idx = dmi_alloc_index; |
| if ((dmi_alloc_index += len) > DMI_MAX_DATA) |
| return NULL; |
| return dmi_alloc_data + idx; |
| } |
| |
| #define dmi_ioremap early_ioremap |
| #define dmi_iounmap early_iounmap |
| |
| #endif |
| |
| #endif |