* This file handles the architecture-dependent parts of initialization
*/
+#include <linux/config.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/mmzone.h>
-#include <linux/screen_info.h>
+#include <linux/tty.h>
#include <linux/ioport.h>
#include <linux/acpi.h>
#include <linux/apm_bios.h>
#include <asm/io_apic.h>
#include <asm/ist.h>
#include <asm/io.h>
-#include <setup_arch.h>
+#include "setup_arch_pre.h"
#include <bios_ebda.h>
-#include <asm/apic.h>
/* Forward Declaration. */
void __init find_max_pfn(void);
}
}
-void __init add_memory_region(unsigned long long start,
- unsigned long long size, int type)
+static void __init add_memory_region(unsigned long long start,
+ unsigned long long size, int type)
{
int x;
static struct e820entry *overlap_list[E820MAX] __initdata;
static struct e820entry new_bios[E820MAX] __initdata;
-int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
+static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
{
struct change_member *change_tmp;
unsigned long current_type, last_type;
* thinkpad 560x, for example, does not cooperate with the memory
* detection code.)
*/
-int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
+static int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
{
/* Only one memory region (or negative)? Ignore it */
if (nr_map < 2)
}
#endif
+/*
+ * Do NOT EVER look at the BIOS memory size location.
+ * It does not work on many machines.
+ */
+#define LOWMEMSIZE() (0x9f000)
+
static void __init parse_cmdline_early (char ** cmdline_p)
{
char c = ' ', *to = command_line, *from = saved_command_line;
#ifdef CONFIG_X86_LOCAL_APIC
/* enable local APIC */
- else if (!memcmp(from, "lapic", 5) || !memcmp(from, "apic", 4))
+ else if (!memcmp(from, "lapic", 5))
lapic_enable();
/* disable local APIC */
probe_roms();
for (i = 0; i < e820.nr_map; i++) {
struct resource *res;
-#ifndef CONFIG_RESOURCES_64BIT
if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL)
continue;
-#endif
res = kzalloc(sizeof(struct resource), GFP_ATOMIC);
switch (e820.map[i].type) {
case E820_RAM: res->name = "System RAM"; break;
res->start = e820.map[i].addr;
res->end = res->start + e820.map[i].size - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
- if (request_resource(&iomem_resource, res)) {
- kfree(res);
- continue;
- }
+ request_resource(&iomem_resource, res);
if (e820.map[i].type == E820_RAM) {
/*
* We don't know which RAM region contains kernel data,
pci_mem_start, gapstart, gapsize);
}
+static char * __init machine_specific_memory_setup(void);
+
#ifdef CONFIG_MCA
static void set_mca_bus(int x)
{
if (efi_enabled)
efi_map_memmap();
-#ifdef CONFIG_X86_APIC_AUTO
- dmi_check_apic();
-#endif
-
#ifdef CONFIG_ACPI
/*
* Parse the ACPI tables for possible boot-time SMP configuration.
#endif
#endif
#ifdef CONFIG_X86_LOCAL_APIC
- if (smp_found_config && cpu_has_apic)
+ if (smp_found_config)
get_smp_config();
#endif
conswitchp = &dummy_con;
#endif
#endif
- tsc_init();
}
static __init int add_pcspkr(void)
}
device_initcall(add_pcspkr);
+#include "setup_arch_post.h"
/*
* Local Variables:
* mode:c