Changeset 535 for trunk/kernel/kern/kernel_init.c
- Timestamp:
- Sep 21, 2018, 10:20:57 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/kernel_init.c
r534 r535 262 262 263 263 /////////////////////////////////////////////////////////////////////////////////////////// 264 // This function is the same as txt0_device_init() but uses the internal multi_tty device 265 // attached to cluster (0,0) instead of the external tty_tsar. 266 // This function is used instead of txt0_device_init() only for TSAR LETI. 267 /////////////////////////////////////////////////////////////////////////////////////////// 268 // @ info : pointer on the local boot-info structure. 269 /////////////////////////////////////////////////////////////////////////////////////////// 270 static void mtty0_device_init( boot_info_t * info) 271 { 272 boot_device_t * dev_tbl; // pointer on array of devices in boot_info 273 uint32_t dev_nr; // actual number of devices in this cluster 274 xptr_t base; // remote pointer on segment base 275 uint32_t func; // device functional index 276 uint32_t impl; // device implementation index 277 uint32_t i; // device index in dev_tbl 278 uint32_t x; // X cluster coordinate 279 uint32_t y; // Y cluster coordinate 280 281 dev_nr = info->int_dev_nr; 282 dev_tbl = info->int_dev; 283 284 // Loop on internal peripherals of cluster (0,0) to find MTY0 285 for ( i = 0; i < dev_nr; i++ ) 286 { 287 base = dev_tbl[i].base; 288 func = FUNC_FROM_TYPE( dev_tbl[i].type ); 289 impl = IMPL_FROM_TYPE( dev_tbl[i].type ); 290 291 if ( func == DEV_FUNC_TXT ) 292 { 293 txt0_chdev.func = func; 294 txt0_chdev.impl = impl; 295 txt0_chdev.channel = 0; 296 txt0_chdev.base = base; 297 txt0_chdev.is_rx = false; 298 299 // Initialize MTY0 chdev lock 300 remote_spinlock_init( XPTR( local_cxy, &txt0_chdev.wait_lock ) ); 301 302 // MTY specific initialization 303 dev_txt_init( &txt0_chdev ); 304 305 // register the MTY in all chdev_dir[x][y] structures 306 for( x = 0 ; x < info->x_size ; x++ ) 307 { 308 for( y = 0 ; y < info->y_max; y++ ) // [FIXME] 309 { 310 cxy_t cxy = (x<<info->y_width) + y; 311 hal_remote_swd( XPTR( cxy , &chdev_dir.txt_tx[0] ) , 312 XPTR( local_cxy , &txt0_chdev ) ); 313 } 314 } 315 } 316 } // end loop on internal devices 317 } // end mty0_device_init() 318 319 /////////////////////////////////////////////////////////////////////////////////////////// 264 320 // This function allocates memory and initializes the chdev descriptors for the internal 265 321 // peripherals contained in the local cluster, other than the LAPIC, as specified by … … 793 849 thread->remote_locks = 0; 794 850 795 // CP0 in I/O cluster initialises TXT0 chdev descriptor796 //if( (core_lid == 0) && (core_cxy == io_cxy) ) txt0_device_init( info );797 851 // CP0 in cluster 0 initializes TXT0 chdev descriptor 798 if( core_cxy == 0 && core_lid == 0 ) txt0_device_init( info ); 852 if( core_cxy == 0 && core_lid == 0 ) // [MODIF] 853 { 854 if( info->use_mty0 == 1 ) { 855 mtty0_device_init( info ); 856 } else { 857 txt0_device_init( info ); 858 } 859 } 799 860 // [FIXME] 800 861
Note: See TracChangeset
for help on using the changeset viewer.