Changeset 207 for soft/giet_vm/sys/kernel_init.c
- Timestamp:
- Aug 16, 2012, 6:36:16 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
soft/giet_vm/sys/kernel_init.c
r203 r207 54 54 { 55 55 // compute cluster and local processor index 56 unsigned int proc_id = _procid(); 57 unsigned int cluster_id = proc_id / NB_PROCS_MAX; 58 unsigned int lpid = proc_id % NB_PROCS_MAX; 56 unsigned int global_pid = _procid(); 57 unsigned int cluster_id = global_pid / NB_PROCS_MAX; 58 unsigned int proc_id = global_pid % NB_PROCS_MAX; 59 60 // Step 0 : Compute number of tasks allocated to proc 61 62 unsigned int tasks = _get_tasks_number(); 63 64 #if GIET_DEBUG_INIT 65 _get_lock(&_tty_put_lock); 66 _puts("\n[GIET DEBUG] step 0 for processor "); 67 _putd( global_pid ); 68 _puts(" : tasks = "); 69 _putd( tasks ); 70 _puts("\n"); 71 _release_lock(&_tty_put_lock); 72 #endif 59 73 60 74 // step 1 : Initialise scheduler physical addresses array 61 62 // get scheduler physical address from register 75 // get scheduler physical address (from CP0 register) 76 63 77 static_scheduler_t* psched = (static_scheduler_t*)_get_sched(); 64 _schedulers_paddr[ proc_id]= psched;78 _schedulers_paddr[global_pid] = psched; 65 79 66 80 #if GIET_DEBUG_INIT 67 81 _get_lock(&_tty_put_lock); 68 82 _puts("\n[GIET DEBUG] step 1 for processor "); 69 _putd( proc_id );83 _putd( global_pid ); 70 84 _puts(" / scheduler pbase = "); 71 _putw( (unsigned int)psched ); 72 _puts("\n"); 73 _release_lock(&_tty_put_lock); 74 #endif 75 85 _putx( (unsigned int)psched ); 86 _puts("\n"); 87 _release_lock(&_tty_put_lock); 88 #endif 76 89 77 90 // step 2 : initialise page table addresse arrays … … 80 93 81 94 unsigned int ltid; 82 unsigned int tasks = _get_tasks_number();83 95 84 96 for ( ltid = 0 ; ltid < tasks ; ltid++ ) … … 94 106 _get_lock(&_tty_put_lock); 95 107 _puts("\n[GIET DEBUG] step 2 for processor "); 96 _putd( proc_id );108 _putd( global_pid ); 97 109 _puts(" / vspace "); 98 110 _putd( vspace_id ); 99 111 _puts("\n- ptab vbase = "); 100 _put w( ptab_vaddr );112 _putx( ptab_vaddr ); 101 113 _puts("\n- ptab pbase = "); 102 _put w( ptab_paddr );114 _putx( ptab_paddr ); 103 115 _puts("\n"); 104 116 _release_lock(&_tty_put_lock); … … 129 141 } 130 142 } 131 _icu_set_mask( cluster_id, lpid, hwi_mask, 0 ); // set HWI_MASK132 _icu_set_mask( cluster_id, lpid, pti_mask, 1 ); // set PTI_MASK143 _icu_set_mask( cluster_id, proc_id, hwi_mask, 0 ); // set HWI_MASK 144 _icu_set_mask( cluster_id, proc_id, pti_mask, 1 ); // set PTI_MASK 133 145 134 146 #if GIET_DEBUG_INIT 135 147 _get_lock(&_tty_put_lock); 136 148 _puts("\n[GIET DEBUG] step 3 for processor "); 137 _putd( proc_id );149 _putd( global_pid ); 138 150 _puts("\n - ICU HWI_MASK = "); 139 _put w( hwi_mask );151 _putx( hwi_mask ); 140 152 _puts("\n - ICU PTI_MASK = "); 141 _putw( pti_mask ); 142 _puts("\n"); 143 _release_lock(&_tty_put_lock); 144 #endif 145 153 _putx( pti_mask ); 154 _puts("\n"); 155 _release_lock(&_tty_put_lock); 156 #endif 146 157 147 158 // step 4 : start TICK timer if more than one task … … 155 166 _get_lock(&_tty_put_lock); 156 167 _puts("\n[GIET DEBUG] Step 4 for processor "); 157 _putd( proc_id );168 _putd( global_pid ); 158 169 _puts(" / context switch activated\n"); 159 170 _release_lock(&_tty_put_lock); … … 169 180 _set_context_slot( IDLE_TASK_INDEX, CTX_RUN_ID, 1 ); 170 181 _set_context_slot( IDLE_TASK_INDEX, CTX_SR_ID, 0xFF03 ); 171 _set_context_slot( IDLE_TASK_INDEX, CTX_SP_ID, (unsigned int)&_idle_stack[ proc_id] + 64 );182 _set_context_slot( IDLE_TASK_INDEX, CTX_SP_ID, (unsigned int)&_idle_stack[global_pid] + 64 ); 172 183 _set_context_slot( IDLE_TASK_INDEX, CTX_RA_ID, (unsigned int)&_ctx_eret ); 173 184 _set_context_slot( IDLE_TASK_INDEX, CTX_EPC_ID, (unsigned int)&_ctx_idle ); … … 178 189 _get_lock(&_tty_put_lock); 179 190 _puts("\n[GIET DEBUG] Step 5 for processor "); 180 _putd( proc_id );191 _putd( global_pid ); 181 192 _puts(" / idle task context set\n"); 182 193 _release_lock(&_tty_put_lock); … … 195 206 _get_lock( &_tty_put_lock ); 196 207 _puts("\n [GIET WARNING] No task allocated to processor "); 197 _put w( proc_id );208 _putd( global_pid ); 198 209 _puts(" => idle\n"); 199 210 _release_lock ( &_tty_put_lock ); … … 212 223 _get_lock(&_tty_put_lock); 213 224 _puts("\n[GIET DEBUG] step 6 for processor "); 214 _putd( proc_id );225 _putd( global_pid ); 215 226 _puts(" / registers initialised \n"); 216 227 _puts("- sp = "); 217 _put w( sp_value );228 _putx( sp_value ); 218 229 _puts("\n"); 219 230 _puts("- sr = "); 220 _put w( sr_value );231 _putx( sr_value ); 221 232 _puts("\n"); 222 233 _puts("- ptpr = "); 223 _put w( ptpr_value<<13 );234 _putx( ptpr_value<<13 ); 224 235 _puts("\n"); 225 236 _puts("- epc = "); 226 _put w( epc_value );237 _putx( epc_value ); 227 238 _puts("\n"); 228 239 _release_lock(&_tty_put_lock);
Note: See TracChangeset
for help on using the changeset viewer.