Changeset 320 for soft/giet_vm
- Timestamp:
- Jun 10, 2014, 12:33:23 PM (10 years ago)
- Location:
- soft/giet_vm/giet_drivers
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
soft/giet_vm/giet_drivers/bdv_driver.c
r313 r320 42 42 // An error code is returned if these conditions are not verified. 43 43 // 44 // The "seg_ioc_base" must be defined in giet_vsegs.ldfile.44 // The SEG_IOC_BASE address must be defined in the hard_config.h file. 45 45 /////////////////////////////////////////////////////////////////////////////////// 46 46 // Implementation notes: … … 55 55 56 56 #include <giet_config.h> 57 #include <hard_config.h> 57 58 #include <bdv_driver.h> 58 59 #include <xcu_driver.h> … … 77 78 unsigned int _bdv_get_register( unsigned int index ) 78 79 { 79 unsigned int* vaddr = (unsigned int*) &seg_ioc_base+ index;80 unsigned int* vaddr = (unsigned int*)SEG_IOC_BASE + index; 80 81 return _io_extended_read( vaddr ); 81 82 } … … 87 88 unsigned int value ) 88 89 { 89 unsigned int* vaddr = (unsigned int*) &seg_ioc_base+ index;90 unsigned int* vaddr = (unsigned int*)SEG_IOC_BASE + index; 90 91 _io_extended_write( vaddr, value ); 91 92 } … … 185 186 _it_disable( &save_sr ); 186 187 188 187 189 // set _bdv_gtid and reset runnable 188 190 _bdv_gtid = (gpid<<16) + ltid; … … 300 302 unsigned int channel ) // unused 301 303 { 302 unsigned int procid = _get_procid();303 unsigned int cluster_xy = procid / NB_PROCS_MAX;304 unsigned int lpid = procid % NB_PROCS_MAX;305 306 304 // get BDV status (and reset IRQ) 307 305 unsigned int status = _bdv_get_register( BLOCK_DEVICE_STATUS ); … … 311 309 (status == BLOCK_DEVICE_BUSY) ) return; 312 310 313 // reset WTI in XCU if WTI type314 if ( irq_type == IRQ_TYPE_WTI )315 {316 unsigned int value;317 _xcu_get_wti_value( cluster_xy, irq_id, &value );318 }319 320 311 // save status in kernel buffer _bdv_status 321 312 _bdv_status = status; 322 313 323 314 // identify task waiting on BDV 324 unsigned int rprocid = _bdv_gtid>>16; 325 unsigned int ltid = _bdv_gtid & 0xFFFF; 326 unsigned int remote_xy = rprocid / NB_PROCS_MAX; 315 unsigned int rprocid = _bdv_gtid>>16; 316 unsigned int ltid = _bdv_gtid & 0xFFFF; 317 unsigned int remote_xy = rprocid / NB_PROCS_MAX; 318 unsigned int remote_lpid = rprocid % NB_PROCS_MAX; 327 319 328 320 // re-activates sleeping task … … 333 325 334 326 // requires a context switch for remote processor running the waiting task 335 _xcu_send_wti( remote_xy, // cluster index336 lpid, //local processor index327 _xcu_send_wti( remote_xy, // remote cluster index 328 remote_lpid, // remote local processor index 337 329 0 ); // don't force context switch if not idle 338 330 339 331 #if GIET_DEBUG_IRQS // we don't take the TTY lock to avoid deadlock 332 unsigned int procid = _get_procid(); 333 unsigned int cluster_xy = procid / NB_PROCS_MAX; 334 unsigned int lpid = procid % NB_PROCS_MAX; 340 335 unsigned int x = cluster_xy >> Y_WIDTH; 341 336 unsigned int y = cluster_xy & ((1<<Y_WIDTH)-1); 342 337 unsigned int rx = remote_xy >> Y_WIDTH; 343 338 unsigned int ry = remote_xy & ((1<<Y_WIDTH)-1); 344 unsigned int rlpid = rprocid % NB_PROCS_MAX;345 339 _puts("\n[IRQS DEBUG] Processor["); 346 340 _putd(x ); … … 358 352 _putd(ry ); 359 353 _puts(","); 360 _putd(r lpid );354 _putd(remote_lpid ); 361 355 _puts(" / bdv status = "); 362 356 _putx(_bdv_status ); -
soft/giet_vm/giet_drivers/cma_driver.c
r298 r320 12 12 // to display images, or with the SocLib vci_multi_nic controller to tranfer 13 13 // both RX and TX packets between NIC and memory buffers. 14 /////////////////////////////////////////////////////////////////////////////////// 14 // 15 // The SEG_DMA_BASE address must be defined in the hard_config.h file 16 //////////////////////////////////////////////////////////////////////////////////// 15 17 // Implementation notes: 16 18 // 1. The higher level access functions can be found in the fbf_driver and … … 22 24 23 25 #include <cma_driver.h> 24 #include <utils.h> // for seg_cma_base 25 #include <hard_config.h> // for X_IO / Y_IO 26 #include <hard_config.h> 27 #include <utils.h> 28 29 #if !defined(SEG_CMA_BASE) 30 # error: You must define SEG_CMA_BASE in the hard_config.h file 31 #endif 26 32 27 33 /////////////////////////////////////////////////////////////////////////////// … … 31 37 unsigned int index ) 32 38 { 33 unsigned int* vaddr = (unsigned int*) &seg_cma_base+39 unsigned int* vaddr = (unsigned int*)SEG_CMA_BASE + 34 40 CHBUF_CHANNEL_SPAN*channel + index; 35 41 return _io_extended_read( vaddr ); … … 43 49 unsigned int value ) 44 50 { 45 unsigned int* vaddr = (unsigned int*) &seg_cma_base+51 unsigned int* vaddr = (unsigned int*)SEG_CMA_BASE + 46 52 CHBUF_CHANNEL_SPAN*channel + index; 47 53 _io_extended_write( vaddr, value ); … … 55 61 unsigned int channel ) 56 62 { 57 _printf("\n[GIET ERROR] _cma_isr() no rimplemented\n");63 _printf("\n[GIET ERROR] _cma_isr() not implemented\n"); 58 64 _exit(); 59 65 } -
soft/giet_vm/giet_drivers/dma_driver.c
r313 r320 18 18 // there is no lock protecting exclusive access to the channel. 19 19 // As the kernel uses a polling policy on the DMA_STATUS register to detect 20 // transfer completion, the DMA IRQ is not used, and there is no DMA_ISR. 20 // transfer completion, the DMA IRQ is not used. 21 // 22 // The virtual base address of the segment associated to a channel is: 23 // SEG_DMA_BASE + cluster_xy * vseg_cluster_increment + DMA_SPAN * channel_id 24 // 25 // The SEG_DMA_BASE virtual address mus be defined in the hard_config.h file. 21 26 //////////////////////////////////////////////////////////////////////////////////// 22 // The virtual base address of the segment associated to a channel is:23 //24 // seg_dma_base + cluster_xy * vseg_cluster_increment + DMA_SPAN * channel_id25 //26 ////////////////////////////////////////////////////////////////////////////////////27 27 28 28 #include <giet_config.h> 29 #include <hard_config.h> 29 30 #include <dma_driver.h> 30 #include <utils.h>31 31 #include <tty_driver.h> 32 32 #include <vmem.h> 33 #include <utils.h> 33 34 34 35 #if !defined(X_SIZE) … … 50 51 #if !defined(NB_DMA_CHANNELS) 51 52 # error: You must define NB_DMA_CHANNELS in the hard_config.h file 53 #endif 54 55 #if !defined(SEG_DMA_BASE) 56 # error: You must define SEG_DMA_BASE in the hard_config.h file 57 #endif 58 59 #if !defined(VSEG_CLUSTER_INCREMENT) 60 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 52 61 #endif 53 62 … … 73 82 74 83 // compute DMA base address 75 unsigned int* dma_address = (unsigned int*) ( (unsigned int)&seg_dma_base+76 (cluster_xy * (unsigned int)&vseg_cluster_increment));84 unsigned int* dma_address = (unsigned int*) ( SEG_DMA_BASE + 85 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 77 86 78 87 // disable interrupt for selected channel … … 101 110 102 111 // compute DMA base address 103 unsigned int* dma_address = (unsigned int*) ( (unsigned int)&seg_dma_base+104 (cluster_xy * (unsigned int)&vseg_cluster_increment));112 unsigned int* dma_address = (unsigned int*) ( SEG_DMA_BASE + 113 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 105 114 106 115 // reset selected channel … … 128 137 129 138 // compute DMA base address 130 unsigned int * dma_address = (unsigned int *) ( (unsigned int)&seg_dma_base+131 (cluster_xy * (unsigned int)&vseg_cluster_increment));139 unsigned int * dma_address = (unsigned int *) ( SEG_DMA_BASE + 140 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 132 141 133 142 // get selected channel status … … 159 168 160 169 // compute DMA base address 161 unsigned int * dma_address = (unsigned int *) ( (unsigned int)&seg_dma_base+162 (cluster_xy * (unsigned int)&vseg_cluster_increment));170 unsigned int * dma_address = (unsigned int *) ( SEG_DMA_BASE + 171 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 163 172 164 173 // selected channel configuration and lauching … … 304 313 } // end _dma_copy 305 314 315 /////////////////////////////////////////////////////////////////////////////// 316 // This ISR handles the IRQ generated by a DMA channel. 317 /////////////////////////////////////////////////////////////////////////////// 318 void _dma_isr( unsigned int irq_type, 319 unsigned int irq_id, 320 unsigned int channel ) 321 { 322 _printf("\n[GIET ERROR] _dma_isr() not implemented\n"); 323 _exit(); 324 } 325 306 326 307 327 -
soft/giet_vm/giet_drivers/dma_driver.h
r263 r320 63 63 unsigned int size ); 64 64 65 extern void _dma_isr( unsigned int irq_type, 66 unsigned int irq_id, 67 unsigned int channel ); 68 65 69 /////////////////////////////////////////////////////////////////////////////////// 66 70 -
soft/giet_vm/giet_drivers/fbf_driver.c
r297 r320 19 19 // A CMA channel must be allocated to the task requesting it in the mapping_info, 20 20 // and stored in the task context. 21 // 22 // The SEG_FBF_BASE virtual address must be defined in hard_config.h file. 21 23 /////////////////////////////////////////////////////////////////////////////////// 22 // The seg_fbf_base virtual address must be defined in giet_vsegs.ld file.23 ///////////////////////////////////////////////////////////////////////////////////24 24 25 25 #include <giet_config.h> 26 #include <hard_config.h> 26 27 #include <fbf_driver.h> 27 28 #include <utils.h> … … 33 34 #include <vmem.h> 34 35 36 #if !defined(SEG_FBF_BASE) 37 # error: You must define SEG_FBF_BASE in the hard_config.h file 38 #endif 39 35 40 #if !defined(GIET_USE_IOMMU) 36 41 # error: You must define GIET_USE_IOMMU in the giet_config.h file … … 57 62 unsigned int length) 58 63 { 59 char* fbf_address = (char *) &seg_fbf_base+ offset;64 char* fbf_address = (char *)SEG_FBF_BASE + offset; 60 65 61 66 _memcpy( fbf_address, buffer, length); … … 74 79 unsigned int length) 75 80 { 76 char* fbf_address = (char *) &seg_fbf_base+ offset;81 char* fbf_address = (char *)SEG_FBF_BASE + offset; 77 82 78 83 _memcpy( buffer, fbf_address, length); … … 176 181 177 182 // compute and register frame buffer physical address 178 vaddr = ((unsigned int) &seg_fbf_base);183 vaddr = ((unsigned int)SEG_FBF_BASE); 179 184 ko = _v2p_translate( (page_table_t*) user_ptab, 180 185 (vaddr >> 12), -
soft/giet_vm/giet_drivers/hba_driver.c
r295 r320 9 9 // block oriented, external storage contrÃŽler, respecting the AHCI standard. 10 10 // 11 // The seg_ioc_base (standard HBA virtual base address) and seg_ioc_base_bis 12 // (backup HBA virtual base address) must be defined in giet_vsegs.ld file. 11 // The SEG_IOC_BASE virtual address must be defined in the hard_config.h file. 13 12 ////////////////////////////////////////////////////////////////////////////////// 14 13 // Implementation notes: … … 67 66 unsigned int index ) 68 67 { 69 unsigned int* vaddr = (unsigned int*) &seg_ioc_base+ channel*HBA_SPAN + index;68 unsigned int* vaddr = (unsigned int*)SEG_IOC_BASE + channel*HBA_SPAN + index; 70 69 return _io_extended_read( vaddr ); 71 70 } … … 78 77 unsigned int value ) 79 78 { 80 unsigned int* vaddr = (unsigned int*) &seg_ioc_base+ channel*HBA_SPAN + index;79 unsigned int* vaddr = (unsigned int*)SEG_IOC_BASE + channel*HBA_SPAN + index; 81 80 _io_extended_write( vaddr, value ); 82 81 } -
soft/giet_vm/giet_drivers/icu_driver.c
r295 r320 15 15 //////////////////////////////////////////////////////////////////////////////// 16 16 // The virtual base address of the segment associated to the component is: 17 // SEG_ICU_BASE + cluster_xy * VSEG_CLUSTER_INCREMENT 17 18 // 18 // seg_icu_base + cluster_xy * vseg_cluster_increment 19 // 20 // The seg_icu_base and vseg_cluster_increment values must be defined 21 // in giet_vsegs.ld file. 19 // SEG_ICU_BASE and VSEG_CLUSTER_INCREMENT must be defined in hard_config.h 22 20 //////////////////////////////////////////////////////////////////////////////// 23 21 … … 47 45 #endif 48 46 49 #if !defined( USE_XICU ) 50 # error: You must define USE_XICU in the hard_config.h file 47 #if !defined( USE_XCU ) 48 # error: You must define USE_XCU in the hard_config.h file 49 #endif 50 51 #if !defined(SEG_ICU_BASE) 52 # error: You must define SEG_ICU_BASE in the hard_config.h file 53 #endif 54 55 #if !defined(VSEG_CLUSTER_INCREMENT) 56 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 51 57 #endif 52 58 … … 69 75 if (proc_id >= NB_PROCS_MAX) return 1; 70 76 71 #if USE_X ICU77 #if USE_XCU 72 78 _printf("[GIET ERROR] _icu_set_mask() should not be used if USE_XICU is set\n"); 73 79 return 1; 74 80 #else 75 unsigned int * icu_address = (unsigned int *) ( (unsigned int)&seg_icu_base+76 (cluster_xy * (unsigned int)&vseg_cluster_increment));81 unsigned int * icu_address = (unsigned int *) ( SEG_ICU_BASE + 82 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 77 83 icu_address[proc_id * ICU_SPAN + ICU_MASK_SET] = value; 78 84 return 0; … … 97 103 if (proc_id >= NB_PROCS_MAX) return 1; 98 104 99 #if USE_X ICU105 #if USE_XCU 100 106 _printf("[GIET ERROR] _icu_set_mask() should not be used if USE_XICU is set\n"); 101 107 return 1; 102 108 #else 103 unsigned int * icu_address = (unsigned int *) ((unsigned int)&seg_icu_base+104 (cluster_xy * (unsigned int)&vseg_cluster_increment));109 unsigned int * icu_address = (unsigned int *) ( SEG_ICU_BASE + 110 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 105 111 *buffer = icu_address[proc_id * ICU_SPAN + ICU_IT_VECTOR]; 106 112 return 0; -
soft/giet_vm/giet_drivers/iob_driver.c
r298 r320 10 10 // This component can be instanciated in more than one cluster. 11 11 /////////////////////////////////////////////////////////////////////////////////// 12 // The seg_iob_base virtual base addresses must be defined in giet_vsegs.ldfile.13 // The physical base address is supposed to be (cluster_xy << 32) | seg_iob_base.12 // The SEG_IOB_BASE virtual addresses must be defined in hard_config.h file. 13 // The physical base address is supposed to be (cluster_xy << 32) | SEG_IOB_BASE. 14 14 /////////////////////////////////////////////////////////////////////////////////// 15 15 … … 17 17 #include <iob_driver.h> 18 18 #include <utils.h> 19 20 #if !defined(SEG_IOB_BASE) 21 # error: You must define SEG_IOB_BASE in the hard_config.h file 22 #endif 19 23 20 24 #if !defined(GIET_USE_IOMMU) … … 34 38 unsigned int index ) // register index 35 39 { 36 unsigned long long paddr = (unsigned long long) (unsigned int)&seg_iob_base+40 unsigned long long paddr = (unsigned long long)SEG_IOB_BASE + 37 41 ((unsigned long long)cluster_xy << 32) + 38 42 ((unsigned long long)index << 2); … … 48 52 unsigned int value ) // value to be written 49 53 { 50 unsigned long long paddr = (unsigned long long) (unsigned int)&seg_iob_base+54 unsigned long long paddr = (unsigned long long)SEG_IOB_BASE + 51 55 ((unsigned long long)cluster_xy << 32) + 52 56 ((unsigned long long)index << 2); … … 54 58 _physical_write( paddr, value ); 55 59 } 56 57 60 58 61 -
soft/giet_vm/giet_drivers/ioc_driver.c
r313 r320 75 75 // An error code is returned if these conditions are not verified. 76 76 // 77 // The "seg_ioc_base" virtual base address of the segment containing the 78 // memory-mapped registers of the device must be defined in the giet_vsegs.ld file. 77 // The SEG_IOC_BASE virtual base address must be defined in hard_config.h, 78 // as it is used by the BDV, HBA and SPI drivers. 79 // 79 80 // If the RAMDISK is used, an extra memory segment with virtual base address 80 // "seg_ramdisk_base" must be defined in the giet_vsegs.ld file.81 // SEG_RDK_BASE, used by RDK driver, must be defined in hard_config.h. 81 82 /////////////////////////////////////////////////////////////////////////////////// 82 83 // Implementation note: … … 97 98 #include <mmc_driver.h> 98 99 #include <vmem.h> 100 101 #if !defined( SEG_IOC_BASE ) 102 # error: You must define SEG_IOC_BASE in the hard_config.h file 103 #endif 99 104 100 105 #if !defined( USE_IOB ) -
soft/giet_vm/giet_drivers/mmc_driver.c
r298 r320 10 10 // This component is replicated in all clusters, and can be accessed through 11 11 // a configuration interface as a set of uncached, memory mapped registers. 12 // /////////////////////////////////////////////////////////////////////////////////12 // 13 13 // The (virtual) base address of the associated segment is: 14 // SEG_MMC_BASE + cluster_id * VSEG_CLUSTER_INCREMENT 14 15 // 15 // seg_mmc_base + cluster_id * vseg_cluster_increment 16 // 17 // The seg_mmc_base and vseg_cluster_increment values must be defined 18 // in the giet_vsegs.ld file. 16 // SEG_MMC_BASE and VSEG_CLUSTER_INCREMENT must be defined in hard_config.h. 19 17 //////////////////////////////////////////////////////////////////////////////// 20 18 … … 40 38 #endif 41 39 40 #if !defined(SEG_MMC_BASE) 41 # error: You must define SEG_MMC_BASE in the hard_config.h file 42 #endif 43 44 #if !defined(VSEG_CLUSTER_INCREMENT) 45 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 46 #endif 47 42 48 /////////////////////////////////////////////////////////////////////////////////// 43 49 // This function invalidates all cache lines covering a memory buffer defined … … 61 67 } 62 68 63 unsigned int* mmc_address = (unsigned int*)( (unsigned int)&seg_mmc_base+64 (cluster_xy * (unsigned int)&vseg_cluster_increment));69 unsigned int* mmc_address = (unsigned int*)( SEG_MMC_BASE + 70 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 65 71 66 72 // get the hard lock protecting exclusive access to MEMC … … 97 103 } 98 104 99 unsigned int * mmc_address = (unsigned int *) ((unsigned int)&seg_mmc_base+100 (cluster_xy * (unsigned int)&vseg_cluster_increment));105 unsigned int* mmc_address = (unsigned int*)( SEG_MMC_BASE + 106 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 101 107 102 108 // get the hard lock protecting exclusive access to MEMC -
soft/giet_vm/giet_drivers/mwr_driver.c
r295 r320 9 9 // 10 10 // This peripheral can be replicated (at most one component per cluster). 11 // /////////////////////////////////////////////////////////////////////////////////11 // 12 12 // The (virtual) base address of the associated segment is: 13 // SEG_MWR_BASE + cluster_xy * VSEG_CLUSTER_INCREMENT 13 14 // 14 // seg_mwr_base + cluster_xy * vseg_cluster_increment 15 // 16 // The seg_mwr_base and vseg_cluster_increment values must be defined 17 // in the giet_vsegs.ld file. 15 // SEG_MWR_BASE and VSEG_CLUSTER_INCREMENT must be defined in hard_config.h 18 16 //////////////////////////////////////////////////////////////////////////////// 19 17 20 18 #include <giet_config.h> 19 #include <hard_config.h> 21 20 #include <mwr_driver.h> 22 21 #include <utils.h> … … 36 35 #if !defined(Y_WIDTH) 37 36 # error: You must define X_WIDTH in the hard_config.h file 37 #endif 38 39 #if !defined(SEG_MWR_BASE) 40 # error: You must define SEG_MWR_BASE in the hard_config.h file 41 #endif 42 43 #if !defined(VSEG_CLUSTER_INCREMENT) 44 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 38 45 #endif 39 46 … … 67 74 68 75 // compute base address 69 unsigned int* mwr_address = (unsigned int*) ( (unsigned int)&seg_mwr_base+70 (cluster_xy * (unsigned int)&vseg_cluster_increment));76 unsigned int* mwr_address = (unsigned int*) ( SEG_MWR_BASE + 77 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 71 78 72 79 unsigned int lsb = (unsigned int)channel_pbase; -
soft/giet_vm/giet_drivers/nic_driver.c
r295 r320 24 24 // One NIC channel and two CMA channels must be allocated to the task 25 25 // in the mapping_info data structure. 26 // 27 // The SEG_NIC_BASE address must be defined in the hard_config.h file. 26 28 ////////////////////////////////////////////////////////////////////////////////// 27 29 … … 32 34 #if !defined(GIET_USE_IOMMU) 33 35 # error: You must define GIET_USE_IOMMU in the giet_config.h file 36 #endif 37 38 #if !defined(SEG_NIC_BASE) 39 # error: You must define SEG_NIC_BASE in the hard_config.h file 34 40 #endif 35 41 … … 62 68 unsigned int index ) 63 69 { 64 unsigned int* vaddr = (unsigned int*) &seg_nic_base+65 NIC_CHANNEL_SPAN *channel + index;70 unsigned int* vaddr = (unsigned int*)SEG_NIC_BASE + 71 NIC_CHANNEL_SPAN * channel + index; 66 72 return _io_extended_read( vaddr ); 67 73 } … … 74 80 unsigned int value ) 75 81 { 76 unsigned int* vaddr = (unsigned int*) &seg_nic_base+77 NIC_CHANNEL_SPAN *channel + index;82 unsigned int* vaddr = (unsigned int*)SEG_NIC_BASE + 83 NIC_CHANNEL_SPAN * channel + index; 78 84 _io_extended_write( vaddr, value ); 79 85 } -
soft/giet_vm/giet_drivers/pic_driver.c
r313 r320 8 8 // This driver supports the SocLib vci_iopic component. 9 9 // 10 // The seg_pic_base address must be defined in giet_vsegs.ldfile.10 // The SEG_PIC_BASE address must be defined in hard_config.h file. 11 11 /////////////////////////////////////////////////////////////////////////////////// 12 12 // Implementation note: … … 20 20 #include <utils.h> 21 21 22 #if !defined(SEG_PIC_BASE) 23 # error: You must define SEG_PIC_BASE in the hard_config.h file 24 #endif 25 22 26 ///////////////////////////////////////////////////////////////////////////////// 23 27 // This low level function returns the value of register (channel / index) … … 26 30 unsigned int index ) 27 31 { 28 unsigned int* vaddr = (unsigned int*) &seg_pic_base+ channel*IOPIC_SPAN + index;32 unsigned int* vaddr = (unsigned int*)SEG_PIC_BASE + channel*IOPIC_SPAN + index; 29 33 return _io_extended_read( vaddr ); 30 34 } … … 37 41 unsigned int value ) 38 42 { 39 unsigned int* vaddr = (unsigned int*) &seg_pic_base+ channel*IOPIC_SPAN + index;43 unsigned int* vaddr = (unsigned int*)SEG_PIC_BASE + channel*IOPIC_SPAN + index; 40 44 _io_extended_write( vaddr, value ); 41 45 } -
soft/giet_vm/giet_drivers/rdk_driver.c
r313 r320 15 15 // As the number of concurrent accesses is not bounded, these functions 16 16 // don't use the _ioc_lock variable. 17 // 18 // The SEG_RDK_BASE virtual address must be defined in the hard_config.h 19 // file when the USE_RAMDISK flag is set. 17 20 /////////////////////////////////////////////////////////////////////////////////// 18 21 19 22 #include <giet_config.h> 23 #include <hard_config.h> 20 24 #include <rdk_driver.h> 21 25 #include <utils.h> 22 26 #include <tty_driver.h> 23 27 #include <ctx_handler.h> 28 29 #if !defined(SEG_RDK_BASE) 30 # error: You must define SEG_RDK_BASE in the hard_config.h file 31 #endif 24 32 25 33 /////////////////////////////////////////////////////////////////////////////// … … 54 62 #endif 55 63 56 char* src = (char*)&seg_ram_disk_base + (512*lba); 64 #if USE_RAM_DISK 65 char* src = (char*)SEG_RDK_BASE + (512*lba); 57 66 char* dst = (char*)buffer; 58 67 _memcpy( dst, src, count*512 ); 59 60 68 return 0; 69 #else 70 _printf("[GIET ERROR] _rdk_read() should not be used if USE_RAM_DISK not set\n"); 71 return 1; 72 #endif 61 73 } 62 74 … … 83 95 #endif 84 96 85 char* dst = (char*)&seg_ram_disk_base + (512*lba); 97 #if USE_RAM_DISK 98 char* dst = (char*)SEG_RDK_BASE + (512*lba); 86 99 char* src = (char*)buffer; 87 100 _memcpy( dst, src, count*512 ); 88 89 101 return 0; 102 #else 103 _printf("[GIET ERROR] _rdk_write() should not be used if USE_RAM_DISK not set\n"); 104 return 1; 105 #endif 90 106 } 91 107 -
soft/giet_vm/giet_drivers/sdc_driver.c
r295 r320 6 6 /////////////////////////////////////////////////////////////////////////////////// 7 7 8 #include <hard_config.h> 8 9 #include <sdc_driver.h> 9 10 #include <tty_driver.h> … … 338 339 unsigned int _sdc_init() 339 340 { 340 spi = (struct spi_dev*) &seg_ioc_base;341 spi = (struct spi_dev*)SEG_IOC_BASE; 341 342 342 343 // initializing the SPI controller -
soft/giet_vm/giet_drivers/sim_driver.c
r258 r320 8 8 // This driver supports the vci_sim_helper component. 9 9 // There is at most one such component in the architecture. 10 // /////////////////////////////////////////////////////////////////////////////////11 // The seg_sim_base address must be defined in the giet_vsegs.ldfile.10 // 11 // The SEG_SIM_BASE address must be defined in the hard_config.h file. 12 12 //////////////////////////////////////////////////////////////////////////////// 13 13 14 #include <hard_config.h> 14 15 #include <giet_config.h> 15 16 #include <sim_driver.h> 16 #include <utils.h> 17 18 #if !defined(SEG_SIM_BASE) 19 # error: You must define SEG_SIM_BASE in the hard_config.h file 20 #endif 17 21 18 22 //////////////////////////////////////////////////////////////////////////////// -
soft/giet_vm/giet_drivers/spi_driver.c
r289 r320 251 251 } 252 252 253 /////////////////////////////////////////////////////////////////////////////// 254 // This ISR handles the IRQ generated by a SPI controler 255 /////////////////////////////////////////////////////////////////////////////// 256 void _spi_isr( unsigned int irq_type, 257 unsigned int irq_id, 258 unsigned int channel ) 259 { 260 _printf("\n[GIET ERROR] _spi_isr() not implemented\n"); 261 _exit(); 262 } 263 253 264 // Local Variables: 254 265 // tab-width: 4 -
soft/giet_vm/giet_drivers/spi_driver.h
r289 r320 51 51 int rx_edge ); 52 52 53 extern void _spi_isr( unsigned int irq_type, 54 unsigned int irq_id, 55 unsigned int channel ); 56 53 57 /////////////////////////////////////////////////////////////////////////////// 54 58 // SPI macros and constants -
soft/giet_vm/giet_drivers/tim_driver.c
r295 r320 19 19 // 20 20 // The NB_PROCS_MAX and NB_TIM_CHANNELS values must be defined in hard_config.h file. 21 // ///////////////////////////////////////////////////////////////////////////////////21 // 22 22 // The virtual base address of the segment associated to a channel is: 23 // 24 // seg_tim_base + cluster_xy * vseg_cluster_increment + TIMER_SPAN * timer_id 25 // 26 // The seg_tim_base and vseg_cluster_increment values must be defined 27 // in the giet_vsegs.ld file. 23 // SEG_TIM_BASE + cluster_xy * VSEG_CLUSTER_INCREMENT + TIMER_SPAN * timer_id 24 // 25 // The SEG_TIM_BASE and VSEG_CLUSTER_INCREMENT must be defined in hard_config.h. 28 26 ///////////////////////////////////////////////////////////////////////////////////// 29 27 … … 33 31 #include <tty_driver.h> 34 32 #include <utils.h> 33 34 #if !defined(SEG_TIM_BASE) 35 # error: You must define SEG_TIM_BASE in the hard_config.h file 36 #endif 37 38 #if !defined(VSEG_CLUSTER_INCREMENT) 39 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 40 #endif 35 41 36 42 #if !defined(X_SIZE) … … 92 98 } 93 99 94 unsigned int* timer_address = (unsigned int *) ( (unsigned int)&seg_tim_base +95 (cluster_xy * (unsigned int)&vseg_cluster_increment));100 unsigned int* timer_address = (unsigned int *) ( SEG_TIM_BASE + 101 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 96 102 97 103 timer_address[local_id * TIMER_SPAN + TIMER_PERIOD] = period; … … 123 129 } 124 130 125 unsigned int* timer_address = (unsigned int *) ( (unsigned int)&seg_tim_base +126 (cluster_xy * (unsigned int)&vseg_cluster_increment));131 unsigned int* timer_address = (unsigned int *) ( SEG_TIM_BASE + 132 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 127 133 128 134 timer_address[local_id * TIMER_SPAN + TIMER_MODE] = 0; … … 155 161 } 156 162 157 unsigned int * timer_address = (unsigned int *) ((unsigned int)&seg_tim_base +158 (cluster_xy * (unsigned int)&vseg_cluster_increment));163 unsigned int* timer_address = (unsigned int *) ( SEG_TIM_BASE + 164 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 159 165 160 166 timer_address[local_id * TIMER_SPAN + TIMER_RESETIRQ] = 0; … … 189 195 190 196 // We suppose that the TIMER_MODE register value is 0x3 191 unsigned int * timer_address = (unsigned int *) ((unsigned int)&seg_tim_base +192 (cluster_xy * (unsigned int)&vseg_cluster_increment));197 unsigned int* timer_address = (unsigned int *) ( SEG_TIM_BASE + 198 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 193 199 194 200 unsigned int period = timer_address[local_id * TIMER_SPAN + TIMER_PERIOD]; -
soft/giet_vm/giet_drivers/tty_driver.c
r315 r320 16 16 // be stored in the context of the task by the boot code. 17 17 // 18 // The seg_tty_base must be defined in giet_vsegs.ldfile.18 // The SEG_TTY_BASE address must be defined in the hard_config.h file. 19 19 /////////////////////////////////////////////////////////////////////////////////// 20 20 // Implementation note: … … 31 31 #include <utils.h> 32 32 33 #if !defined(SEG_TTY_BASE) 34 # error: You must define SEG_TTY_BASE in the hard_config.h file 35 #endif 36 33 37 #if !defined(NB_TTY_CHANNELS) 34 38 # error: You must define NB_TTY_CHANNELS in the hard_config.h file … … 60 64 unsigned int index ) 61 65 { 62 unsigned int* vaddr = (unsigned int*) &seg_tty_base+ channel*TTY_SPAN + index;66 unsigned int* vaddr = (unsigned int*)SEG_TTY_BASE + channel*TTY_SPAN + index; 63 67 return _io_extended_read( vaddr ); 64 68 } … … 71 75 unsigned int value ) 72 76 { 73 unsigned int* vaddr = (unsigned int*) &seg_tty_base+ channel*TTY_SPAN + index;77 unsigned int* vaddr = (unsigned int*)SEG_TTY_BASE + channel*TTY_SPAN + index; 74 78 _io_extended_write( vaddr, value ); 75 79 } -
soft/giet_vm/giet_drivers/xcu_driver.c
r295 r320 5 5 // Copyright (c) UPMC-LIP6 6 6 /////////////////////////////////////////////////////////////////////////////////// 7 7 // This peripheral is replicated in aall clusters containing processors. 8 // 9 // SEG_XCU_BASE and VSEG_CLUSTER_INCREMENT must be defined in hard_config.h file. 10 /////////////////////////////////////////////////////////////////////////////////// 11 12 #include <hard_config.h> 8 13 #include <giet_config.h> 9 14 #include <xcu_driver.h> … … 32 37 #endif 33 38 34 #if !defined( USE_XICU ) 35 # error: You must define USE_XICU in the hard_config.h file 39 #if !defined( USE_XCU ) 40 # error: You must define USE_XCU in the hard_config.h file 41 #endif 42 43 #if !defined( SEG_XCU_BASE ) 44 # error: You must define SEG_XCU_BASE in the hard_config.h file 45 #endif 46 47 #if !defined( VSEG_CLUSTER_INCREMENT ) 48 # error: You must define VSEG_CLUSTER_INCREMENT in the hard_config.h file 36 49 #endif 37 50 … … 47 60 unsigned int irq_type ) 48 61 { 49 #if USE_X ICU62 #if USE_XCU 50 63 // parameters checking 51 64 unsigned int x = cluster_xy >> Y_WIDTH; … … 55 68 if (channel >= (NB_PROCS_MAX * IRQ_PER_PROCESSOR)) _exit(); 56 69 57 volatile unsigned int* xcu_address = 58 (unsigned int *) ((unsigned int)&seg_xcu_base + 59 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 70 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 71 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 60 72 61 73 unsigned int func; 62 if (irq_type == IRQ_TYPE_PTI) func = X ICU_MSK_PTI_ENABLE;63 else if (irq_type == IRQ_TYPE_WTI) func = X ICU_MSK_WTI_ENABLE;64 else if (irq_type == IRQ_TYPE_HWI) func = X ICU_MSK_HWI_ENABLE;74 if (irq_type == IRQ_TYPE_PTI) func = XCU_MSK_PTI_ENABLE; 75 else if (irq_type == IRQ_TYPE_WTI) func = XCU_MSK_WTI_ENABLE; 76 else if (irq_type == IRQ_TYPE_HWI) func = XCU_MSK_HWI_ENABLE; 65 77 else 66 78 { … … 69 81 } 70 82 71 xcu_address[X ICU_REG(func,channel)] = value;72 73 #else 74 _printf("[GIET ERROR] _xcu_set_mask() should not be used if USE_X ICU not set\n");83 xcu_address[XCU_REG(func,channel)] = value; 84 85 #else 86 _printf("[GIET ERROR] _xcu_set_mask() should not be used if USE_XCU not set\n"); 75 87 _exit(); 76 88 #endif … … 90 102 unsigned int * irq_type ) 91 103 { 92 #if USE_X ICU104 #if USE_XCU 93 105 // parameters checking 94 106 unsigned int x = cluster_xy >> Y_WIDTH; … … 98 110 if (channel >= (NB_PROCS_MAX * IRQ_PER_PROCESSOR)) _exit(); 99 111 100 volatile unsigned int* xcu_address = 101 (unsigned int *) ((unsigned int)&seg_xcu_base + 102 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 103 104 unsigned int prio = xcu_address[XICU_REG(XICU_PRIO,channel)]; 112 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 113 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 114 115 unsigned int prio = xcu_address[XCU_REG(XCU_PRIO,channel)]; 105 116 unsigned int pti_ok = (prio & 0x00000001); 106 117 unsigned int hwi_ok = (prio & 0x00000002); … … 130 141 131 142 #else 132 _printf("[GIET ERROR] _xcu_get_index should not be used if USE_X ICU is not set\n");143 _printf("[GIET ERROR] _xcu_get_index should not be used if USE_XCU is not set\n"); 133 144 _exit(); 134 145 #endif … … 143 154 unsigned int wdata ) 144 155 { 145 #if USE_X ICU156 #if USE_XCU 146 157 // parameters checking 147 158 unsigned int x = cluster_xy >> Y_WIDTH; … … 151 162 if (wti_index >= 32) _exit(); 152 163 153 volatile unsigned int* xcu_address = 154 (unsigned int *) ((unsigned int)&seg_xcu_base + 155 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 156 157 xcu_address[XICU_REG(XICU_WTI_REG,wti_index)] = wdata; 158 159 #else 160 _printf("[GIET ERROR] _xcu_send_ipi should not be used if USE_XICU is not set\n"); 164 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 165 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 166 167 xcu_address[XCU_REG(XCU_WTI_REG,wti_index)] = wdata; 168 169 #else 170 _printf("[GIET ERROR] _xcu_send_ipi should not be used if USE_XCU is not set\n"); 161 171 _exit(); 162 172 #endif … … 173 183 unsigned int * value ) 174 184 { 175 #if USE_X ICU185 #if USE_XCU 176 186 // parameters checking 177 187 unsigned int x = cluster_xy >> Y_WIDTH; … … 181 191 if (wti_index >= 32) _exit(); 182 192 183 volatile unsigned int* xcu_address = 184 (unsigned int *) ((unsigned int)&seg_xcu_base + 185 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 186 187 *value = xcu_address[XICU_REG(XICU_WTI_REG, wti_index)]; 188 189 #else 190 _printf("[GIET ERROR] in _xcu_get_wti_value() USE_XICU is not set\n"); 193 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 194 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 195 196 *value = xcu_address[XCU_REG(XCU_WTI_REG, wti_index)]; 197 198 #else 199 _printf("[GIET ERROR] in _xcu_get_wti_value() USE_XCU is not set\n"); 191 200 _exit(); 192 201 #endif … … 203 212 unsigned int * address ) 204 213 { 205 #if USE_X ICU214 #if USE_XCU 206 215 if (wti_index >= 32) _exit(); 207 216 208 unsigned int xcu_address = (unsigned int) &seg_xcu_base;209 *address = xcu_address + (X ICU_REG(XICU_WTI_REG, wti_index)<<2);210 211 #else 212 _printf("[GIET ERROR] in _xcu_get_wti_address() USE_X ICU is not set\n");213 _exit(); 214 #endif 215 } 216 217 //////////////////////////////////////////////////////////////////////////////// 218 // This function activates a timer contained in X ICU by writing in the217 unsigned int xcu_address = (unsigned int)SEG_XCU_BASE; 218 *address = xcu_address + (XCU_REG(XCU_WTI_REG, wti_index)<<2); 219 220 #else 221 _printf("[GIET ERROR] in _xcu_get_wti_address() USE_XCU is not set\n"); 222 _exit(); 223 #endif 224 } 225 226 //////////////////////////////////////////////////////////////////////////////// 227 // This function activates a timer contained in XCU by writing in the 219 228 // proper register the period value. 220 229 //////////////////////////////////////////////////////////////////////////////// … … 223 232 unsigned int period ) 224 233 { 225 #if USE_X ICU234 #if USE_XCU 226 235 // parameters checking 227 236 unsigned int x = cluster_xy >> Y_WIDTH; … … 230 239 if (y >= Y_SIZE) _exit(); 231 240 232 volatile unsigned int* xcu_address = 233 (unsigned int *) ((unsigned int)&seg_xcu_base + 234 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 235 236 xcu_address[XICU_REG(XICU_PTI_PER, pti_index)] = period; 237 238 #else 239 _printf("[GIET ERROR] in _xcu_timer_start() USE_XICU is not set\n"); 240 _exit(); 241 #endif 242 } 243 244 ////////////////////////////////////////////////////////////////////////////// 245 // This function desactivates a timer in XICU component 241 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 242 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 243 244 xcu_address[XCU_REG(XCU_PTI_PER, pti_index)] = period; 245 246 #else 247 _printf("[GIET ERROR] in _xcu_timer_start() USE_XCU is not set\n"); 248 _exit(); 249 #endif 250 } 251 252 ////////////////////////////////////////////////////////////////////////////// 253 // This function desactivates a timer in XCU component 246 254 // by writing in the proper register. 247 255 ////////////////////////////////////////////////////////////////////////////// … … 249 257 unsigned int pti_index) 250 258 { 251 #if USE_X ICU259 #if USE_XCU 252 260 // parameters checking 253 261 unsigned int x = cluster_xy >> Y_WIDTH; … … 256 264 if (y >= Y_SIZE) _exit(); 257 265 258 volatile unsigned int * xcu_address = 259 (unsigned int *) ((unsigned int)&seg_xcu_base + 260 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 261 262 xcu_address[XICU_REG(XICU_PTI_PER, pti_index)] = 0; 263 264 #else 265 _printf("[GIET ERROR] in _xcu_timer_stop() USE_XICU is not set\n"); 266 _exit(); 267 #endif 268 } 269 270 ////////////////////////////////////////////////////////////////////////////// 271 // This function acknowlegge a timer interrupt in XICU 272 // component by reading in the proper register. 266 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 267 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 268 269 xcu_address[XCU_REG(XCU_PTI_PER, pti_index)] = 0; 270 271 #else 272 _printf("[GIET ERROR] in _xcu_timer_stop() USE_XCU is not set\n"); 273 _exit(); 274 #endif 275 } 276 277 ////////////////////////////////////////////////////////////////////////////// 278 // This function acknowlegge a timer interrupt in XCU 279 // component by reading in the proper XCU register. 273 280 // It can be used by both the isr_switch() for a "system" timer, 274 281 // or by the _isr_timer() for an "user" timer. 275 282 ////////////////////////////////////////////////////////////////////////////// 276 void_xcu_timer_reset_irq( unsigned int cluster_xy,277 unsigned int pti_index )278 { 279 #if USE_X ICU283 unsigned int _xcu_timer_reset_irq( unsigned int cluster_xy, 284 unsigned int pti_index ) 285 { 286 #if USE_XCU 280 287 // parameters checking 281 288 unsigned int x = cluster_xy >> Y_WIDTH; … … 284 291 if (y >= Y_SIZE) _exit(); 285 292 286 volatile unsigned int * xcu_address = 287 (unsigned int *) ((unsigned int)&seg_xcu_base + 288 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 289 290 xcu_address[XICU_REG(XICU_PTI_ACK, pti_index)]; 291 292 #else 293 _printf("[GIET ERROR] in _xcu_timer_reset_irq() USE_XICU is not set\n"); 294 _exit(); 293 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 294 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 295 296 // This return value is not used / avoid a compilation warning. 297 return xcu_address[XCU_REG(XCU_PTI_ACK, pti_index)]; 298 299 #else 300 _printf("[GIET ERROR] in _xcu_timer_reset_irq() USE_XCU is not set\n"); 301 _exit(); 302 return 0; 295 303 #endif 296 304 } … … 307 315 unsigned int pti_index ) 308 316 { 309 #if USE_X ICU317 #if USE_XCU 310 318 // parameters checking 311 319 unsigned int x = cluster_xy >> Y_WIDTH; … … 314 322 if (y >= Y_SIZE) _exit(); 315 323 316 volatile unsigned int * xcu_address = 317 (unsigned int *) ((unsigned int) &seg_xcu_base + 318 (cluster_xy * (unsigned int)&vseg_cluster_increment)); 319 320 unsigned int period = xcu_address[XICU_REG(XICU_PTI_PER, pti_index)]; 324 unsigned int* xcu_address = (unsigned int *) ( SEG_XCU_BASE + 325 (cluster_xy * VSEG_CLUSTER_INCREMENT) ); 326 327 unsigned int period = xcu_address[XCU_REG(XCU_PTI_PER, pti_index)]; 321 328 322 329 // we write 0 first because if the timer is currently running, 323 330 // the corresponding timer counter is not reset 324 xcu_address[X ICU_REG(XICU_PTI_PER, pti_index)] = 0;325 xcu_address[X ICU_REG(XICU_PTI_PER, pti_index)] = period;326 327 #else 328 _printf("[GIET ERROR] in _xcu_timer_reset_cpt() USE_X ICU is not set\n");331 xcu_address[XCU_REG(XCU_PTI_PER, pti_index)] = 0; 332 xcu_address[XCU_REG(XCU_PTI_PER, pti_index)] = period; 333 334 #else 335 _printf("[GIET ERROR] in _xcu_timer_reset_cpt() USE_XCU is not set\n"); 329 336 _exit(); 330 337 #endif -
soft/giet_vm/giet_drivers/xcu_driver.h
r295 r320 29 29 /////////////////////////////////////////////////////////////////////////////////// 30 30 31 enum X icu_registers31 enum Xcu_registers 32 32 { 33 X ICU_WTI_REG = 0,34 X ICU_PTI_PER = 1,35 X ICU_PTI_VAL = 2,36 X ICU_PTI_ACK = 3,33 XCU_WTI_REG = 0, 34 XCU_PTI_PER = 1, 35 XCU_PTI_VAL = 2, 36 XCU_PTI_ACK = 3, 37 37 38 X ICU_MSK_PTI = 4,39 X ICU_MSK_PTI_ENABLE = 5,40 X ICU_MSK_PTI_DISABLE = 6,41 X ICU_PTI_ACTIVE = 6,38 XCU_MSK_PTI = 4, 39 XCU_MSK_PTI_ENABLE = 5, 40 XCU_MSK_PTI_DISABLE = 6, 41 XCU_PTI_ACTIVE = 6, 42 42 43 X ICU_MSK_HWI = 8,44 X ICU_MSK_HWI_ENABLE = 9,45 X ICU_MSK_HWI_DISABLE = 10,46 X ICU_HWI_ACTIVE = 10,43 XCU_MSK_HWI = 8, 44 XCU_MSK_HWI_ENABLE = 9, 45 XCU_MSK_HWI_DISABLE = 10, 46 XCU_HWI_ACTIVE = 10, 47 47 48 X ICU_MSK_WTI = 12,49 X ICU_MSK_WTI_ENABLE = 13,50 X ICU_MSK_WTI_DISABLE = 14,51 X ICU_WTI_ACTIVE = 14,48 XCU_MSK_WTI = 12, 49 XCU_MSK_WTI_ENABLE = 13, 50 XCU_MSK_WTI_DISABLE = 14, 51 XCU_WTI_ACTIVE = 14, 52 52 53 X ICU_PRIO = 15,53 XCU_PRIO = 15, 54 54 }; 55 55 56 #define X ICU_REG(func, index) (((func)<<5)|(index))56 #define XCU_REG(func, index) (((func)<<5)|(index)) 57 57 58 58 /////////////////////////////////////////////////////////////////////////////////// … … 88 88 unsigned int pti_index ); 89 89 90 extern void_xcu_timer_reset_irq( unsigned int cluster_xy,91 unsigned int pti_index );90 extern unsigned int _xcu_timer_reset_irq( unsigned int cluster_xy, 91 unsigned int pti_index ); 92 92 93 93 extern void _xcu_timer_reset_cpt( unsigned int cluster_xy,
Note: See TracChangeset
for help on using the changeset viewer.