Rev 2692 | Rev 2723 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2692 | Rev 2697 | ||
---|---|---|---|
Line 69... | Line 69... | ||
69 | * |
69 | * |
70 | * Clean IOPL(12,13) and NT(14) flags in EFLAGS register |
70 | * Clean IOPL(12,13) and NT(14) flags in EFLAGS register |
71 | */ |
71 | */ |
72 | static void clean_IOPL_NT_flags(void) |
72 | static void clean_IOPL_NT_flags(void) |
73 | { |
73 | { |
74 | asm |
74 | asm ( |
75 | ( |
- | |
76 | "pushfq;" |
75 | "pushfq\n" |
77 | "pop %%rax;" |
76 | "pop %%rax\n" |
78 | "and $~(0x7000),%%rax;" |
77 | "and $~(0x7000), %%rax\n" |
79 | "pushq %%rax;" |
78 | "pushq %%rax\n" |
80 | "popfq;" |
79 | "popfq\n" |
81 | : |
80 | : |
82 | : |
81 | : |
83 | :"%rax" |
82 | : "%rax" |
84 | ); |
83 | ); |
85 | } |
84 | } |
86 | 85 | ||
87 | /** Disable alignment check |
86 | /** Disable alignment check |
88 | * |
87 | * |
89 | * Clean AM(18) flag in CR0 register |
88 | * Clean AM(18) flag in CR0 register |
90 | */ |
89 | */ |
91 | static void clean_AM_flag(void) |
90 | static void clean_AM_flag(void) |
92 | { |
91 | { |
93 | asm |
92 | asm ( |
94 | ( |
- | |
95 | "mov %%cr0,%%rax;" |
93 | "mov %%cr0, %%rax\n" |
96 | "and $~(0x40000),%%rax;" |
94 | "and $~(0x40000), %%rax\n" |
97 | "mov %%rax,%%cr0;" |
95 | "mov %%rax, %%cr0\n" |
98 | : |
96 | : |
99 | : |
97 | : |
100 | :"%rax" |
98 | : "%rax" |
101 | ); |
99 | ); |
102 | } |
100 | } |
103 | 101 | ||
104 | void arch_pre_mm_init(void) |
102 | void arch_pre_mm_init(void) |
105 | { |
103 | { |
Line 125... | Line 123... | ||
125 | /* PIC */ |
123 | /* PIC */ |
126 | i8259_init(); |
124 | i8259_init(); |
127 | } |
125 | } |
128 | } |
126 | } |
129 | 127 | ||
- | 128 | ||
130 | void arch_post_mm_init(void) |
129 | void arch_post_mm_init(void) |
131 | { |
130 | { |
132 | if (config.cpu_active == 1) { |
131 | if (config.cpu_active == 1) { |
133 | /* Initialize IRQ routing */ |
132 | /* Initialize IRQ routing */ |
134 | irq_init(IRQ_COUNT, IRQ_COUNT); |
133 | irq_init(IRQ_COUNT, IRQ_COUNT); |
135 | 134 | ||
136 | /* hard clock */ |
135 | /* hard clock */ |
137 | i8254_init(); |
136 | i8254_init(); |
138 | 137 | ||
139 | #ifdef CONFIG_FB |
138 | #ifdef CONFIG_FB |
140 | if (vesa_present()) |
139 | if (vesa_present()) |
141 | vesa_init(); |
140 | vesa_init(); |
142 | else |
141 | else |
143 | #endif |
142 | #endif |
Line 146... | Line 145... | ||
146 | /* Enable debugger */ |
145 | /* Enable debugger */ |
147 | debugger_init(); |
146 | debugger_init(); |
148 | /* Merge all memory zones to 1 big zone */ |
147 | /* Merge all memory zones to 1 big zone */ |
149 | zone_merge_all(); |
148 | zone_merge_all(); |
150 | } |
149 | } |
- | 150 | ||
151 | /* Setup fast SYSCALL/SYSRET */ |
151 | /* Setup fast SYSCALL/SYSRET */ |
152 | syscall_setup_cpu(); |
152 | syscall_setup_cpu(); |
153 | - | ||
154 | } |
153 | } |
155 | 154 | ||
156 | void arch_post_cpu_init() |
155 | void arch_post_cpu_init() |
157 | { |
156 | { |
158 | #ifdef CONFIG_SMP |
157 | #ifdef CONFIG_SMP |