Changes in kernel/arch/ia32/src/ia32.c [e98f1c3e:4a5ba372] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/ia32.c
re98f1c3e r4a5ba372 36 36 37 37 #include <arch.h> 38 #include <arch/arch.h>39 38 #include <typedefs.h> 40 39 #include <errno.h> … … 51 50 #include <genarch/drivers/ega/ega.h> 52 51 #include <genarch/drivers/i8042/i8042.h> 53 #include <genarch/drivers/ns16550/ns16550.h>54 52 #include <genarch/drivers/legacy/ia32/io.h> 55 53 #include <genarch/fb/bfb.h> 56 54 #include <genarch/kbrd/kbrd.h> 57 #include <genarch/srln/srln.h>58 55 #include <genarch/multiboot/multiboot.h> 59 56 #include <genarch/multiboot/multiboot2.h> 60 #include <arch/pm.h>61 #include <arch/vreg.h>62 57 63 58 #ifdef CONFIG_SMP 64 59 #include <arch/smp/apic.h> 65 60 #endif 66 67 static void ia32_pre_mm_init(void);68 static void ia32_post_mm_init(void);69 static void ia32_post_cpu_init(void);70 static void ia32_pre_smp_init(void);71 static void ia32_post_smp_init(void);72 73 arch_ops_t ia32_ops = {74 .pre_mm_init = ia32_pre_mm_init,75 .post_mm_init = ia32_post_mm_init,76 .post_cpu_init = ia32_post_cpu_init,77 .pre_smp_init = ia32_pre_smp_init,78 .post_smp_init = ia32_post_smp_init,79 };80 81 arch_ops_t *arch_ops = &ia32_ops;82 61 83 62 /** Perform ia32-specific initialization before main_bsp() is called. … … 87 66 * 88 67 */ 89 void ia32_pre_main(uint32_t signature, void *info)68 void arch_pre_main(uint32_t signature, void *info) 90 69 { 91 70 /* Parse multiboot information obtained from the bootloader. */ … … 100 79 } 101 80 102 void ia32_pre_mm_init(void)81 void arch_pre_mm_init(void) 103 82 { 104 83 pm_init(); … … 113 92 } 114 93 115 void ia32_post_mm_init(void) 116 { 117 vreg_init(); 118 94 void arch_post_mm_init(void) 95 { 119 96 if (config.cpu_active == 1) { 120 97 /* Initialize IRQ routing */ … … 145 122 } 146 123 147 void ia32_post_cpu_init(void)124 void arch_post_cpu_init() 148 125 { 149 126 #ifdef CONFIG_SMP … … 155 132 } 156 133 157 void ia32_pre_smp_init(void)134 void arch_pre_smp_init(void) 158 135 { 159 136 if (config.cpu_active == 1) { … … 164 141 } 165 142 166 void ia32_post_smp_init(void)143 void arch_post_smp_init(void) 167 144 { 168 145 /* Currently the only supported platform for ia32 is 'pc'. */ … … 189 166 } 190 167 #endif 191 192 #if (defined(CONFIG_NS16550) || defined(CONFIG_NS16550_OUT))193 /*194 * Initialize the ns16550 controller.195 */196 #ifdef CONFIG_NS16550_OUT197 outdev_t *ns16550_out;198 outdev_t **ns16550_out_ptr = &ns16550_out;199 #else200 outdev_t **ns16550_out_ptr = NULL;201 #endif202 ns16550_instance_t *ns16550_instance203 = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL,204 ns16550_out_ptr);205 if (ns16550_instance) {206 #ifdef CONFIG_NS16550207 srln_instance_t *srln_instance = srln_init();208 if (srln_instance) {209 indev_t *sink = stdin_wire();210 indev_t *srln = srln_wire(srln_instance, sink);211 ns16550_wire(ns16550_instance, srln);212 trap_virtual_enable_irqs(1 << IRQ_NS16550);213 }214 #endif215 #ifdef CONFIG_NS16550_OUT216 if (ns16550_out) {217 stdout_wire(ns16550_out);218 }219 #endif220 }221 #endif222 168 223 169 if (irqs_info != NULL) … … 237 183 } 238 184 185 /** Set thread-local-storage pointer 186 * 187 * TLS pointer is set in GS register. That means, the GS contains 188 * selector, and the descriptor->base is the correct address. 189 */ 190 sysarg_t sys_tls_set(uintptr_t addr) 191 { 192 THREAD->arch.tls = addr; 193 set_tls_desc(addr); 194 195 return EOK; 196 } 197 239 198 /** Construct function pointer 240 199 *
Note:
See TracChangeset
for help on using the changeset viewer.