Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

i386/kernel/setup.c File Reference

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
#include <linux/malloc.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/apm_bios.h>
#include <asm/processor.h>
#include <linux/console.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/smp.h>
#include <asm/cobalt.h>
#include <asm/msr.h>
#include <asm/dma.h>
#include <asm/e820.h>

Include dependency graph for i386/kernel/setup.c:

Go to the source code of this file.

Data Structures

struct  drive_info_struct

Defines

#define PARAM   ((unsigned char *)empty_zero_page)
#define SCREEN_INFO   (*(struct screen_info *) (PARAM+0))
#define EXT_MEM_K   (*(unsigned short *) (PARAM+2))
#define ALT_MEM_K   (*(unsigned long *) (PARAM+0x1e0))
#define E820_MAP_NR   (*(char*) (PARAM+E820NR))
#define E820_MAP   ((struct e820entry *) (PARAM+E820MAP))
#define APM_BIOS_INFO   (*(struct apm_bios_info *) (PARAM+0x40))
#define DRIVE_INFO   (*(struct drive_info_struct *) (PARAM+0x80))
#define SYS_DESC_TABLE   (*(struct sys_desc_table_struct*)(PARAM+0xa0))
#define MOUNT_ROOT_RDONLY   (*(unsigned short *) (PARAM+0x1F2))
#define RAMDISK_FLAGS   (*(unsigned short *) (PARAM+0x1F8))
#define ORIG_ROOT_DEV   (*(unsigned short *) (PARAM+0x1FC))
#define AUX_DEVICE_INFO   (*(unsigned char *) (PARAM+0x1FF))
#define LOADER_TYPE   (*(unsigned char *) (PARAM+0x210))
#define KERNEL_START   (*(unsigned long *) (PARAM+0x214))
#define INITRD_START   (*(unsigned long *) (PARAM+0x218))
#define INITRD_SIZE   (*(unsigned long *) (PARAM+0x21c))
#define COMMAND_LINE   ((char *) (PARAM+2048))
#define COMMAND_LINE_SIZE   256
#define RAMDISK_IMAGE_START_MASK   0x07FF
#define RAMDISK_PROMPT_FLAG   0x8000
#define RAMDISK_LOAD_FLAG   0x4000
#define BIOS_ENDBASE   0x9F000
#define PFN_UP(x)   (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
#define PFN_DOWN(x)   ((x) >> PAGE_SHIFT)
#define VMALLOC_RESERVE   (64 << 20)
#define MAXMEM   ((unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE))

Functions

void mcheck_init (struct cpuinfo_x86 *c)
static void __init add_memory_region (unsigned long long start, unsigned long long size, int type)
static int __init copy_e820_map (struct e820entry *biosmap, int nr_map)
static void __init print_memory_map (char *who)
static void __init setup_memory_region (void)
void __init setup_arch (char **cmdline_p, unsigned long *memory_start_p, unsigned long *memory_end_p)
static int __init get_model_name (struct cpuinfo_x86 *c)
static void __init display_cacheinfo (struct cpuinfo_x86 *c)
static int __init init_amd (struct cpuinfo_x86 *c)
static void do_cyrix_devid (unsigned char *dir0, unsigned char *dir1)
static void __init init_cyrix (struct cpuinfo_x86 *c)
static void __init init_transmeta (struct cpuinfo_x86 *c)
static void __init init_rise (struct cpuinfo_x86 *c)
static void __init get_cpu_vendor (struct cpuinfo_x86 *c)
static void __init init_centaur (struct cpuinfo_x86 *c)
static void __init init_intel (struct cpuinfo_x86 *c)
static char __inittable_lookup_model (struct cpuinfo_x86 *c)
static void __init squash_the_stupid_serial_number (struct cpuinfo_x86 *c)
int __init x86_serial_nr_setup (char *s)
 __setup ("serialnumber", x86_serial_nr_setup)
 __initfunc (void identify_cpu(struct cpuinfo_x86 *c))
void __init dodgy_tsc (void)
void __init print_cpu_info (struct cpuinfo_x86 *c)
int get_cpuinfo (char *buffer)

Variables

char ignore_irq13 = 0
cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }
int EISA_bus = 0
int MCA_bus = 0
unsigned int machine_id = 0
unsigned int machine_submodel_id = 0
unsigned int BIOS_revision = 0
unsigned int mca_pentium_flag = 0
drive_info_struct drive_info
screen_info screen_info
apm_info apm_info
e820map e820 __initdata = { 0, }
unsigned char aux_device_present
int root_mountflags
int _etext
int _edata
int _end
unsigned long cpu_khz
static char command_line [COMMAND_LINE_SIZE] = { 0, }
char saved_command_line [COMMAND_LINE_SIZE]


Define Documentation

#define ALT_MEM_K   (*(unsigned long *) (PARAM+0x1e0))
 

Definition at line 134 of file i386/kernel/setup.c.

#define APM_BIOS_INFO   (*(struct apm_bios_info *) (PARAM+0x40))
 

Definition at line 137 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define AUX_DEVICE_INFO   (*(unsigned char *) (PARAM+0x1FF))
 

Definition at line 143 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define BIOS_ENDBASE   0x9F000
 

Definition at line 155 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define COMMAND_LINE   ((char *) (PARAM+2048))
 

Definition at line 148 of file i386/kernel/setup.c.

#define COMMAND_LINE_SIZE   256
 

Definition at line 149 of file i386/kernel/setup.c.

#define DRIVE_INFO   (*(struct drive_info_struct *) (PARAM+0x80))
 

Definition at line 138 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define E820_MAP   ((struct e820entry *) (PARAM+E820MAP))
 

Definition at line 136 of file i386/kernel/setup.c.

Referenced by setup_memory_region().

#define E820_MAP_NR   (*(char*) (PARAM+E820NR))
 

Definition at line 135 of file i386/kernel/setup.c.

Referenced by setup_memory_region().

#define EXT_MEM_K   (*(unsigned short *) (PARAM+2))
 

Definition at line 133 of file i386/kernel/setup.c.

#define INITRD_SIZE   (*(unsigned long *) (PARAM+0x21c))
 

Definition at line 147 of file i386/kernel/setup.c.

#define INITRD_START   (*(unsigned long *) (PARAM+0x218))
 

Definition at line 146 of file i386/kernel/setup.c.

#define KERNEL_START   (*(unsigned long *) (PARAM+0x214))
 

Definition at line 145 of file i386/kernel/setup.c.

Referenced by mem_init().

#define LOADER_TYPE   (*(unsigned char *) (PARAM+0x210))
 

Definition at line 144 of file i386/kernel/setup.c.

Referenced by dec_entry(), and setup_arch().

#define MAXMEM   ((unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE))
 

Referenced by setup_arch().

#define MOUNT_ROOT_RDONLY   (*(unsigned short *) (PARAM+0x1F2))
 

Definition at line 140 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define ORIG_ROOT_DEV   (*(unsigned short *) (PARAM+0x1FC))
 

Definition at line 142 of file i386/kernel/setup.c.

Referenced by __initfunc(), and setup_arch().

#define PARAM   ((unsigned char *)empty_zero_page)
 

Definition at line 131 of file i386/kernel/setup.c.

#define PFN_DOWN x   )     ((x) >> PAGE_SHIFT)
 

#define PFN_UP x   )     (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
 

#define RAMDISK_FLAGS   (*(unsigned short *) (PARAM+0x1F8))
 

Definition at line 141 of file i386/kernel/setup.c.

Referenced by __initfunc(), and setup_arch().

#define RAMDISK_IMAGE_START_MASK   0x07FF
 

Definition at line 151 of file i386/kernel/setup.c.

Referenced by __initfunc(), and setup_arch().

#define RAMDISK_LOAD_FLAG   0x4000
 

Definition at line 153 of file i386/kernel/setup.c.

Referenced by __initfunc(), and setup_arch().

#define RAMDISK_PROMPT_FLAG   0x8000
 

Definition at line 152 of file i386/kernel/setup.c.

Referenced by __initfunc(), and setup_arch().

#define SCREEN_INFO   (*(struct screen_info *) (PARAM+0))
 

Definition at line 132 of file i386/kernel/setup.c.

#define SYS_DESC_TABLE   (*(struct sys_desc_table_struct*)(PARAM+0xa0))
 

Definition at line 139 of file i386/kernel/setup.c.

Referenced by setup_arch().

#define VMALLOC_RESERVE   (64 << 20)
 


Function Documentation

__initfunc void   identify_cpu(struct cpuinfo_x86 *c)  ) 
 

Definition at line 1351 of file i386/kernel/setup.c.

References get_cpu_vendor(), init_amd(), init_centaur(), init_cyrix(), init_intel(), init_rise(), init_transmeta(), loops_per_jiffy, mcheck_init(), p, sprintf(), squash_the_stupid_serial_number(), strcpy, table_lookup_model(), X86_VENDOR_AMD, X86_VENDOR_CENTAUR, X86_VENDOR_CYRIX, X86_VENDOR_INTEL, X86_VENDOR_NSC, X86_VENDOR_RISE, X86_VENDOR_TRANSMETA, and X86_VENDOR_UNKNOWN.

Here is the call graph for this function:

__setup "serialnumber"  ,
x86_serial_nr_setup 
 

static void __init add_memory_region unsigned long long  start,
unsigned long long  size,
int  type
[static]
 

Definition at line 283 of file i386/kernel/setup.c.

References e820map::e820entry::addr, E820MAX, e820map::map, e820map::nr_map, printk, e820map::e820entry::size, e820map::e820entry::type, and x.

Referenced by copy_e820_map(), setup_arch(), and setup_memory_region().

static int __init copy_e820_map struct e820entry *  biosmap,
int  nr_map
[static]
 

Definition at line 301 of file i386/kernel/setup.c.

References add_memory_region(), E820_RAM, end, i386_endbase, size, start, and type.

Referenced by setup_memory_region().

Here is the call graph for this function:

static void __init display_cacheinfo struct cpuinfo_x86 c  )  [static]
 

Definition at line 610 of file i386/kernel/setup.c.

References cpuid, cpuid_eax(), cpuid_ecx(), dummy, ecx, edx, n, printk, x80000000, cpuinfo_x86::x86, cpuinfo_x86::x86_mask, cpuinfo_x86::x86_model, cpuinfo_x86::x86_vendor, X86_VENDOR_AMD, X86_VENDOR_CENTAUR, and xFF.

Referenced by init_amd(), init_centaur(), and init_transmeta().

Here is the call graph for this function:

static void do_cyrix_devid unsigned char *  dir0,
unsigned char *  dir1
[inline, static]
 

Definition at line 741 of file i386/kernel/setup.c.

References cli, CX86_CCR2, CX86_CCR3, CX86_DIR0, CX86_DIR1, getCx86, setCx86, sti, x04, x80, and xc0.

Referenced by init_cyrix().

void __init dodgy_tsc void   ) 
 

Definition at line 1423 of file i386/kernel/setup.c.

References get_cpu_vendor(), init_cyrix(), cpuinfo_x86::x86_vendor, X86_VENDOR_CYRIX, and X86_VENDOR_NSC.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init get_cpu_vendor struct cpuinfo_x86 c  )  [static]
 

Definition at line 1018 of file i386/kernel/setup.c.

References strcmp, v, cpuinfo_x86::x86_vendor, X86_VENDOR_AMD, X86_VENDOR_CENTAUR, X86_VENDOR_CYRIX, cpuinfo_x86::x86_vendor_id, X86_VENDOR_INTEL, X86_VENDOR_NEXGEN, X86_VENDOR_NSC, X86_VENDOR_RISE, X86_VENDOR_TRANSMETA, X86_VENDOR_UMC, and X86_VENDOR_UNKNOWN.

Referenced by __initfunc(), and dodgy_tsc().

int get_cpuinfo char *  buffer  ) 
 

Definition at line 1469 of file i386/kernel/setup.c.

References c, cpuinfo_x86::coma_bug, cpu_data, cpu_khz, cpu_online_map, cpuinfo_x86::cpuid_level, cpuinfo_x86::f00f_bug, cpuinfo_x86::fdiv_bug, cpuinfo_x86::hard_math, cpuinfo_x86::hlt_works_ok, HZ, i, ignore_irq13, cpuinfo_x86::loops_per_jiffy, n, NR_CPUS, p, sprintf(), cpuinfo_x86::wp_works_ok, cpuinfo_x86::x86, cpuinfo_x86::x86_cache_size, cpuinfo_x86::x86_capability, X86_FEATURE_SEP, X86_FEATURE_TSC, cpuinfo_x86::x86_mask, cpuinfo_x86::x86_model, cpuinfo_x86::x86_model_id, cpuinfo_x86::x86_vendor, X86_VENDOR_AMD, X86_VENDOR_CENTAUR, X86_VENDOR_CYRIX, cpuinfo_x86::x86_vendor_id, and X86_VENDOR_INTEL.

Here is the call graph for this function:

static int __init get_model_name struct cpuinfo_x86 c  )  [static]
 

Definition at line 582 of file i386/kernel/setup.c.

References cpuid, cpuid_eax(), p, v, x80000000, and cpuinfo_x86::x86_model_id.

Referenced by init_amd(), init_centaur(), init_cyrix(), init_intel(), and init_transmeta().

Here is the call graph for this function:

static int __init init_amd struct cpuinfo_x86 c  )  [static]
 

Definition at line 657 of file i386/kernel/setup.c.

References __asm__(), __cli, display_cacheinfo(), get_model_name(), h, KERN_INFO, l, max_mapnr, PAGE_SHIFT, printk, r, rdmsr, restore_flags, save_flags, u32, wrmsr, cpuinfo_x86::x86, cpuinfo_x86::x86_capability, X86_FEATURE_APIC, X86_FEATURE_MTRR, X86_FEATURE_PGE, cpuinfo_x86::x86_mask, and cpuinfo_x86::x86_model.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init init_centaur struct cpuinfo_x86 c  )  [static]
 

Definition at line 1045 of file i386/kernel/setup.c.

References cpuid, display_cacheinfo(), get_model_name(), printk, rdmsr, u32, wrmsr, cpuinfo_x86::x86, cpuinfo_x86::x86_capability, X86_FEATURE_AMD3D, X86_FEATURE_CX8, X86_FEATURE_MTRR, X86_FEATURE_TSC, and cpuinfo_x86::x86_model.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init init_cyrix struct cpuinfo_x86 c  )  [static]
 

Definition at line 797 of file i386/kernel/setup.c.

References buf, cpuinfo_x86::coma_bug, cpuinfo_x86::cpuid_level, CX86_CCR7, Cx86_dir0_msb, do_cyrix_devid(), get_model_name(), getCx86, cpuinfo_x86::hard_math, isa_dma_bridge_buggy, KERN_INFO, NULL, p, printk, setCx86, strcat, strcpy, tmp, x0f, x20, cpuinfo_x86::x86_cache_size, cpuinfo_x86::x86_capability, X86_FEATURE_MTRR, X86_FEATURE_TSC, cpuinfo_x86::x86_mask, cpuinfo_x86::x86_model, cpuinfo_x86::x86_model_id, and xf0.

Referenced by __initfunc(), and dodgy_tsc().

Here is the call graph for this function:

static void __init init_intel struct cpuinfo_x86 c  )  [static]
 

Definition at line 1099 of file i386/kernel/setup.c.

References cpuid, cpuid_eax(), cpuinfo_x86::cpuid_level, dl, get_model_name(), i, j, KERN_INFO, l2, l3, n, NULL, p, printk, strcpy, cpuinfo_x86::x86, cpuinfo_x86::x86_cache_size, cpuinfo_x86::x86_model, and cpuinfo_x86::x86_model_id.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init init_rise struct cpuinfo_x86 c  )  [static]
 

Definition at line 994 of file i386/kernel/setup.c.

References __asm__(), printk, cpuinfo_x86::x86_capability, X86_FEATURE_CX8, and cpuinfo_x86::x86_model.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init init_transmeta struct cpuinfo_x86 c  )  [static]
 

Definition at line 929 of file i386/kernel/setup.c.

References cpuid, display_cacheinfo(), dummy, get_model_name(), max, printk, rdmsr, wrmsr, x00000001, cpuinfo_x86::x86_capability, and xff.

Referenced by __initfunc().

Here is the call graph for this function:

void mcheck_init struct cpuinfo_x86 c  ) 
 

Definition at line 212 of file bluesmoke.c.

References intel_mcheck_init(), mce_disabled, winchip_mcheck_init(), cpuinfo_x86::x86, cpuinfo_x86::x86_vendor, X86_VENDOR_AMD, X86_VENDOR_CENTAUR, and X86_VENDOR_INTEL.

Referenced by __initfunc().

Here is the call graph for this function:

void __init print_cpu_info struct cpuinfo_x86 c  ) 
 

Definition at line 1441 of file i386/kernel/setup.c.

Referenced by do_boot_cpu(), smp_boot_cpus(), and start_secondary().

static void __init print_memory_map char *  who  )  [static]
 

Definition at line 336 of file i386/kernel/setup.c.

References e820map::e820entry::addr, E820_ACPI, E820_NVS, E820_RAM, E820_RESERVED, i, e820map::map, e820map::nr_map, printk, e820map::e820entry::size, and e820map::e820entry::type.

Referenced by setup_arch(), and setup_memory_region().

void __init setup_arch char **  cmdline_p,
unsigned long memory_start_p,
unsigned long memory_end_p
 

Definition at line 396 of file i386/kernel/setup.c.

References __pa, __va, _edata, _end, _etext, add_memory_region(), e820map::e820entry::addr, alpha_using_srm, APM_BIOS_INFO, apm_info, AUX_DEVICE_INFO, aux_device_present, BIOS_ENDBASE, BIOS_revision, c, callback_init(), COMMAND_LINE, command_line, COMMAND_LINE_SIZE, conswitchp, cpu, DRIVE_INFO, drive_info, dummy_con, E820_RAM, end, est_cycle_freq, find_end_memory(), from, get_memory_end_override(), get_sysnames(), get_sysvec(), get_sysvec_byname(), HIGH_MEMORY, i, i386_endbase, INIT_HWRPB, init_smp_config(), init_task, initrd_end, INITRD_SIZE, INITRD_START, initrd_start, KERN_NOTICE, KERN_WARNING, len, LOADER_TYPE, long, machine_id, machine_submodel_id, e820map::map, hwrpb_struct::max_asn, MAX_ASN, MAXMEM, MCA_bus, memcmp, memcpy, memory_end, memory_start, MOUNT_ROOT_RDONLY, MS_RDONLY, e820map::nr_map, NULL, ORIG_ROOT_DEV, p, PAGE_MASK, PAGE_OFFSET, panic(), print_memory_map(), printk, hwrpb_struct::processor_offset, RAMDISK_FLAGS, RAMDISK_IMAGE_START_MASK, RAMDISK_LOAD_FLAG, RAMDISK_PROMPT_FLAG, rd_doload, rd_image_start, rd_prompt, register_srm_console(), request_region, ROOT_DEV, root_mountflags, rtc_init_pit(), saved_command_line, SCREEN_INFO, screen_info, setup_memory_region(), setup_smp(), simple_strtol(), simple_strtoul(), e820map::e820entry::size, srm_hae, srmcons_output, hwrpb_struct::ssn, start, strcmp, strcpy, strncmp(), strncpy, strtok(), SYS_DESC_TABLE, hwrpb_struct::sys_type, hwrpb_struct::sys_variation, to, percpu_struct::type, e820map::e820entry::type, vga_con, wrmces(), x00, x10, x20, x40, x7, x80, cpuinfo_x86::x86_capability, X86_FEATURE_PSE, xc0, xf0, and xffffffff.

Here is the call graph for this function:

static void __init setup_memory_region void   )  [static]
 

Definition at line 362 of file i386/kernel/setup.c.

References add_memory_region(), ALT_MEM_K, copy_e820_map(), E820_MAP, E820_MAP_NR, E820_RAM, EXT_MEM_K, HIGH_MEMORY, i386_endbase, e820map::nr_map, print_memory_map(), and printk.

Referenced by setup_arch().

Here is the call graph for this function:

static void __init squash_the_stupid_serial_number struct cpuinfo_x86 c  )  [static]
 

Definition at line 1330 of file i386/kernel/setup.c.

References cpuid_eax(), cpuinfo_x86::cpuid_level, hi, KERN_NOTICE, lo, printk, rdmsr, wrmsr, cpuinfo_x86::x86_capability, and X86_FEATURE_PN.

Referenced by __initfunc().

Here is the call graph for this function:

static char __init* table_lookup_model struct cpuinfo_x86 c  )  [static]
 

Definition at line 1311 of file i386/kernel/setup.c.

References cpu_model_info::family, i, cpu_model_info::model_names, NULL, cpu_model_info::vendor, cpuinfo_x86::x86, cpuinfo_x86::x86_model, and cpuinfo_x86::x86_vendor.

Referenced by __initfunc().

int __init x86_serial_nr_setup char *  s  ) 
 

Definition at line 1343 of file i386/kernel/setup.c.


Variable Documentation

char* cpu_vendor_names [] __initdata = { 0, }
 

Definition at line 1435 of file i386/kernel/setup.c.

int _edata
 

int _end
 

int _etext
 

struct apm_info apm_info
 

Definition at line 106 of file i386/kernel/setup.c.

Referenced by apm(), apm_enable_power_management(), apm_engage_power_management(), apm_event_handler(), apm_get_event(), apm_get_info(), apm_get_power_status(), apm_init(), check_events(), dmi_decode(), send_event(), and setup_arch().

unsigned char aux_device_present
 

Definition at line 113 of file i386/kernel/setup.c.

unsigned int BIOS_revision = 0
 

Definition at line 98 of file i386/kernel/setup.c.

Referenced by setup_arch().

struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }
 

Definition at line 87 of file i386/kernel/setup.c.

Referenced by __initfunc(), add_timer_randomness(), cpu_idle(), do_page_fault(), drm_cpu_valid(), drm_mmap(), fb_mmap(), get_num_var_ranges(), have_wrcomb(), math_error_irq(), mtrr_add(), mtrr_del(), noncached_address(), pgprot_noncached(), restore_i387(), save_i387(), set_mtrr_done(), set_mtrr_prepare(), set_pte_phys(), smp_store_cpu_info(), smp_tune_scheduling(), sym53c8xx_pci_init(), and sys_ptrace().

char command_line[COMMAND_LINE_SIZE] = { 0, } [static]
<