- Timestamp:
- Jan 21, 2014, 7:20:06 PM (11 years ago)
- Location:
- soft/giet_vm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
soft/giet_vm/giet_drivers/fbf_driver.c
r263 r275 276 276 #endif 277 277 278 // SYNC request for channel descriptor 279 _memc_sync( desc_paddr, 32 ); 278 if ( USE_IOB ) 279 { 280 // SYNC request for channel descriptor 281 _memc_sync( desc_paddr, 32 ); 282 } 280 283 281 284 // CMA channel activation -
soft/giet_vm/giet_drivers/ioc_driver.c
r263 r275 155 155 } 156 156 157 unsigned int * ioc_address = (unsigned int *) &seg_ioc_base ;157 volatile unsigned int * ioc_address = (unsigned int *) &seg_ioc_base ; 158 158 159 159 unsigned int length = count << 9; // count * 512 bytes … … 358 358 else ioc_address[BLOCK_DEVICE_OP] = BLOCK_DEVICE_READ; 359 359 360 // Exit critical section361 _it_enable();362 363 360 // deschedule task 364 361 _ctx_switch(); -
soft/giet_vm/giet_drivers/xcu_driver.c
r271 r275 72 72 73 73 #if USE_XICU 74 unsigned int* xcu_address = (unsigned int *) ((unsigned int)&seg_xcu_base + 75 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 74 volatile unsigned int* xcu_address = 75 (unsigned int *) ((unsigned int)&seg_xcu_base + 76 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 77 76 78 unsigned int func; 77 79 if (irq_type == IRQ_TYPE_PTI) func = XICU_MSK_PTI_ENABLE; … … 109 111 110 112 #if USE_XICU 111 unsigned int* xcu_address = (unsigned int *) ((unsigned int)&seg_xcu_base + 112 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 113 volatile unsigned int* xcu_address = 114 (unsigned int *) ((unsigned int)&seg_xcu_base + 115 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 113 116 114 117 unsigned int prio = xcu_address[XICU_REG(XICU_PRIO, proc_id)]; … … 151 154 152 155 #if USE_XICU 153 unsigned int* xcu_address = (unsigned int *) ((unsigned int)&seg_xcu_base + 154 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 156 volatile unsigned int* xcu_address = 157 (unsigned int *) ((unsigned int)&seg_xcu_base + 158 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 159 155 160 xcu_address[XICU_REG(XICU_WTI_REG, proc_id)] = wdata; 156 161 return 0; … … 180 185 181 186 #if USE_XICU 182 unsigned int* xcu_address = (unsigned int *) ((unsigned int)&seg_xcu_base + 183 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 187 volatile unsigned int* xcu_address = 188 (unsigned int *) ((unsigned int)&seg_xcu_base + 189 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 190 184 191 xcu_address[XICU_REG(XICU_PTI_PER, pti_index)] = period; 185 192 return 0; … … 208 215 209 216 #if USE_XICU 210 unsigned int * xcu_address = (unsigned int *) ((unsigned int)&seg_xcu_base + 211 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 217 volatile unsigned int * xcu_address = 218 (unsigned int *) ((unsigned int)&seg_xcu_base + 219 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 220 212 221 xcu_address[XICU_REG(XICU_PTI_PER, pti_index)] = 0; 213 222 return 0; … … 271 280 272 281 #if USE_XICU 273 unsigned int * xcu_address = (unsigned int *) ((unsigned int) &seg_xcu_base + 274 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 282 volatile unsigned int * xcu_address = 283 (unsigned int *) ((unsigned int) &seg_xcu_base + 284 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 275 285 276 286 unsigned int period = xcu_address[XICU_REG(XICU_PTI_PER, pti_index)]; -
soft/giet_vm/giet_kernel/ctx_handler.c
r271 r275 108 108 if (curr_task_id != next_task_id) 109 109 { 110 #if GIET_DEBUG_SWITCH 111 _tty_get_lock( 0 ); 112 _puts("\n[GIET DEBUG] Context switch for processor "); 113 _putd(_get_procid()); 114 _puts(" at cycle "); 115 _putd(_get_proctime()); 116 _puts("\n"); 117 _puts(" - tasks = "); 118 _putd(tasks); 119 _puts("\n"); 120 _puts(" - curr_task_id = "); 121 _putd( curr_task_id ); 122 _puts("\n"); 123 _puts(" - next_task_id = "); 124 _putd(next_task_id); 125 _puts("\n"); 126 _tty_release_lock( 0 ); 127 #endif 128 110 129 unsigned int* curr_ctx_vaddr = &(psched->context[curr_task_id][0]); 111 130 unsigned int* next_ctx_vaddr = &(psched->context[next_task_id][0]); … … 113 132 unsigned int local_id = procid % NB_PROCS_MAX; 114 133 unsigned int cluster_id = procid / NB_PROCS_MAX; 115 116 // set current task index117 psched->current = next_task_id;118 134 119 135 // reset timer counter … … 124 140 #endif 125 141 142 // set current task index 143 psched->current = next_task_id; 144 126 145 // makes context switch 127 146 _task_switch(curr_ctx_vaddr, next_ctx_vaddr); 128 129 #if GIET_DEBUG_SWITCH130 _tty_get_lock( 0 );131 _puts("\n[GIET DEBUG] Context switch for processor ");132 _putd(_get_procid());133 _puts(" at cycle ");134 _putd(_get_proctime());135 _puts("\n");136 _puts(" - tasks = ");137 _putd(tasks);138 _puts("\n");139 _puts(" - curr_task_id = ");140 _putd( curr_task_id );141 _puts("\n");142 _puts(" - next_task_id = ");143 _putd(next_task_id);144 _puts("\n");145 _tty_release_lock( 0 );146 #endif147 148 147 } 149 148 } //end _ctx_switch() … … 157 156 while(1) 158 157 { 158 #if GIET_IDLE_TASK_VERBOSITY == 1 159 _tty_get_lock( 0 ); 160 _puts("\n[GIET WARNING] Processor "); 161 _putd(_get_procid()); 162 _puts(" idle at cycle "); 163 _putd(_get_proctime()); 164 _puts("\n"); 165 _tty_release_lock( 0 ); 166 #endif 167 159 168 asm volatile( 160 169 "move $3, %0 \n" … … 167 176 : "$3" ); 168 177 169 #if GIET_IDLE_TASK_VERBOSITY == 1170 _tty_get_lock( 0 );171 _puts("\n[GIET WARNING] Processor ");172 _putd(_get_procid());173 _puts(" idle at cycle ");174 _putd(_get_proctime());175 _puts("\n");176 _tty_release_lock( 0 );177 #endif178 179 178 count = GIET_IDLE_TASK_PERIOD; 180 179 }
Note: See TracChangeset
for help on using the changeset viewer.