OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [x86/] [kernel/] [head64.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 *  prepare to run common code
3
 *
4
 *  Copyright (C) 2000 Andrea Arcangeli <andrea@suse.de> SuSE
5
 */
6
 
7
#include <linux/init.h>
8
#include <linux/linkage.h>
9
#include <linux/types.h>
10
#include <linux/kernel.h>
11
#include <linux/string.h>
12
#include <linux/percpu.h>
13
 
14
#include <asm/processor.h>
15
#include <asm/proto.h>
16
#include <asm/smp.h>
17
#include <asm/setup.h>
18
#include <asm/desc.h>
19
#include <asm/pgtable.h>
20
#include <asm/tlbflush.h>
21
#include <asm/sections.h>
22
 
23
static void __init zap_identity_mappings(void)
24
{
25
        pgd_t *pgd = pgd_offset_k(0UL);
26
        pgd_clear(pgd);
27
        __flush_tlb();
28
}
29
 
30
/* Don't add a printk in there. printk relies on the PDA which is not initialized
31
   yet. */
32
static void __init clear_bss(void)
33
{
34
        memset(__bss_start, 0,
35
               (unsigned long) __bss_stop - (unsigned long) __bss_start);
36
}
37
 
38
static void __init copy_bootdata(char *real_mode_data)
39
{
40
        char * command_line;
41
 
42
        memcpy(&boot_params, real_mode_data, sizeof boot_params);
43
        if (boot_params.hdr.cmd_line_ptr) {
44
                command_line = __va(boot_params.hdr.cmd_line_ptr);
45
                memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
46
        }
47
}
48
 
49
void __init x86_64_start_kernel(char * real_mode_data)
50
{
51
        int i;
52
 
53
        /* clear bss before set_intr_gate with early_idt_handler */
54
        clear_bss();
55
 
56
        /* Make NULL pointers segfault */
57
        zap_identity_mappings();
58
 
59
        for (i = 0; i < IDT_ENTRIES; i++)
60
                set_intr_gate(i, early_idt_handler);
61
        load_idt((const struct desc_ptr *)&idt_descr);
62
 
63
        early_printk("Kernel alive\n");
64
 
65
        for (i = 0; i < NR_CPUS; i++)
66
                cpu_pda(i) = &boot_cpu_pda[i];
67
 
68
        pda_init(0);
69
        copy_bootdata(__va(real_mode_data));
70
#ifdef CONFIG_SMP
71
        cpu_set(0, cpu_online_map);
72
#endif
73
        start_kernel();
74
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.