Changes in kernel/arch/ia32/src/ia32.c [36df4109:4a5ba372] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/ia32.c
r36df4109 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 */ … … 143 120 zone_merge_all(); 144 121 } 145 146 } 147 148 void ia32_post_cpu_init(void) 122 } 123 124 void arch_post_cpu_init() 149 125 { 150 126 #ifdef CONFIG_SMP … … 156 132 } 157 133 158 void ia32_pre_smp_init(void)134 void arch_pre_smp_init(void) 159 135 { 160 136 if (config.cpu_active == 1) { … … 165 141 } 166 142 167 void ia32_post_smp_init(void)143 void arch_post_smp_init(void) 168 144 { 169 145 /* Currently the only supported platform for ia32 is 'pc'. */ … … 190 166 } 191 167 #endif 192 193 #if (defined(CONFIG_NS16550) || defined(CONFIG_NS16550_OUT))194 /*195 * Initialize the ns16550 controller.196 */197 #ifdef CONFIG_NS16550_OUT198 outdev_t *ns16550_out;199 outdev_t **ns16550_out_ptr = &ns16550_out;200 #else201 outdev_t **ns16550_out_ptr = NULL;202 #endif203 ns16550_instance_t *ns16550_instance204 = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL,205 ns16550_out_ptr);206 if (ns16550_instance) {207 #ifdef CONFIG_NS16550208 srln_instance_t *srln_instance = srln_init();209 if (srln_instance) {210 indev_t *sink = stdin_wire();211 indev_t *srln = srln_wire(srln_instance, sink);212 ns16550_wire(ns16550_instance, srln);213 trap_virtual_enable_irqs(1 << IRQ_NS16550);214 }215 #endif216 #ifdef CONFIG_NS16550_OUT217 if (ns16550_out) {218 stdout_wire(ns16550_out);219 }220 #endif221 }222 #endif223 168 224 169 if (irqs_info != NULL) … … 238 183 } 239 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 240 198 /** Construct function pointer 241 199 *
Note:
See TracChangeset
for help on using the changeset viewer.