Changeset 6b781c0 in mainline for kernel/arch/arm32/src/arm32.c
- Timestamp:
- 2007-06-08T15:02:49Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c03ee1c
- Parents:
- 3ee8a075
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/arm32.c
r3ee8a075 r6b781c0 1 1 /* 2 * Copyright (c) 200 3-2004 Jakub Jermar2 * Copyright (c) 2007 Michal Kebrt 3 3 * All rights reserved. 4 4 * … … 31 31 */ 32 32 /** @file 33 * @brief ARM32 architecture specific functions. 33 34 */ 34 35 36 #include <arch.h> 37 #include <arch/boot.h> 38 #include <config.h> 39 #include <arch/console.h> 40 #include <ddi/device.h> 41 #include <genarch/fb/fb.h> 42 #include <genarch/fb/visuals.h> 43 #include <ddi/irq.h> 44 #include <arch/debug/print.h> 45 #include <print.h> 46 #include <config.h> 47 #include <interrupt.h> 48 #include <arch/regutils.h> 49 #include <arch/machine.h> 50 #include <userspace.h> 35 51 36 #include <arch.h> 52 /** Information about loaded tasks. */ 53 bootinfo_t bootinfo; 37 54 55 /** Performs arm32 specific initialization before main_bsp() is called. */ 38 56 void arch_pre_main(void) 39 57 { 40 /* TODO */ 58 int i; 59 60 init.cnt = bootinfo.cnt; 61 62 for (i = 0; i < bootinfo.cnt; ++i) { 63 init.tasks[i].addr = bootinfo.tasks[i].addr; 64 init.tasks[i].size = bootinfo.tasks[i].size; 65 } 66 41 67 } 42 68 69 /** Performs arm32 specific initialization before mm is initialized. */ 43 70 void arch_pre_mm_init(void) 44 71 { 45 /* TODO */ 72 /* It is not assumed by default */ 73 interrupts_disable(); 46 74 } 47 75 76 /** Performs arm32 specific initialization afterr mm is initialized. */ 48 77 void arch_post_mm_init(void) 49 78 { 50 /* TODO */ 79 machine_hw_map_init(); 80 81 /* Initialize exception dispatch table */ 82 exception_init(); 83 84 interrupt_init(); 85 86 console_init(device_assign_devno()); 87 88 #ifdef CONFIG_FB 89 fb_init(machine_get_fb_address(), 640, 480, 1920, VISUAL_RGB_8_8_8); 90 #endif 51 91 } 52 92 93 /** Performs arm32 specific tasks needed after cpu is initialized. 94 * 95 * Currently the function is empty. 96 */ 53 97 void arch_post_cpu_init(void) 54 98 { 55 /* TODO */56 99 } 57 100 101 102 /** Performs arm32 specific tasks needed before the multiprocessing is 103 * initialized. 104 * 105 * Currently the function is empty because SMP is not supported. 106 */ 58 107 void arch_pre_smp_init(void) 59 108 { 60 /* TODO */61 109 } 62 110 111 112 /** Performs arm32 specific tasks needed after the multiprocessing is 113 * initialized. 114 * 115 * Currently the function is empty because SMP is not supported. 116 */ 63 117 void arch_post_smp_init(void) 64 118 { 65 /* TODO */66 119 } 67 120 68 /** Perform arm32 specific tasks needed before the new task is run. */ 121 122 /** Performs arm32 specific tasks needed before the new task is run. */ 69 123 void before_task_runs_arch(void) 70 124 { 71 /* TODO */125 tlb_invalidate_all(); 72 126 } 73 127 74 /** Perform arm32 specific tasks needed before the new thread is scheduled. */ 128 129 /** Performs arm32 specific tasks needed before the new thread is scheduled. 130 * 131 * It sets supervisor_sp. 132 */ 75 133 void before_thread_runs_arch(void) 76 134 { 77 /* TODO */ 135 uint8_t *stck; 136 137 stck = &THREAD->kstack[THREAD_STACK_SIZE - SP_DELTA]; 138 supervisor_sp = (uintptr_t) stck; 78 139 } 79 140 141 /** Performs arm32 specific tasks before a thread stops running. 142 * 143 * Currently the function is empty. 144 */ 80 145 void after_thread_ran_arch(void) 81 146 { 82 /* TODO */83 147 } 84 148 85 void arch_reboot(void) 149 /** Halts CPU. */ 150 void cpu_halt(void) 86 151 { 87 // TODO 88 while (1); 152 machine_cpu_halt(); 153 } 154 155 /** Reboot. */ 156 void arch_reboot() 157 { 158 /* not implemented */ 159 for (;;) 160 ; 89 161 } 90 162
Note:
See TracChangeset
for help on using the changeset viewer.