- Timestamp:
- Sep 19, 2014, 2:53:18 PM (10 years ago)
- Location:
- trunk/softs
- Files:
-
- 3 added
- 5 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/softs/giet_tsar/stdio.c
r744 r810 72 72 #define in_drivers __attribute__((section (".drivers"))) 73 73 #define in_unckdata __attribute__((section (".unckdata"))) 74 #define cacheline_aligned __attribute__((aligned(64))) 74 75 75 76 ////////////////////////////////////////////////////////////// … … 92 93 static in_unckdata int volatile _ioc_status; 93 94 94 static in_unckdata char volatile _tty_get_buf[NB_TTY_CHANNELS]; 95 static in_unckdata int volatile _tty_get_full[NB_TTY_CHANNELS] = { [0 ... NB_TTY_CHANNELS-1] = 0 }; 95 static volatile in_unckdata struct cacheline_aligned { 96 int lock; 97 int get_full; 98 char get_buf; 99 char __padding[55]; 100 } _tty_channel[NB_TTY_CHANNELS]; 96 101 97 102 //////////////////////////////////////////////////////////////////////////////////////// … … 141 146 in_drivers void _extended_memcpy( unsigned int dst_cluster, 142 147 unsigned int dst_address, 148 unsigned int src_cluster, 143 149 unsigned int src_address, 144 150 unsigned int length ) … … 157 163 for ( i = 0 ; i < length ; i = i+4 ) 158 164 { 159 word = _word_extended_read( src_cluster, (src_address + i));160 _word_extended_write( dst_cluster, (dst_address + i), word );165 word = _word_extended_read( src_cluster, src_address + i ); 166 _word_extended_write( dst_cluster, dst_address + i, word ); 161 167 } 162 168 } … … 545 551 in_drivers void _tty_get_lock( unsigned int channel ) 546 552 { 547 unsigned int base = (unsigned int)&seg_tty_base; 548 unsigned int offset = (TTY_CONFIG + channel*TTY_SPAN) << 2; 549 while ( _word_extended_read( CLUSTER_IO, base + offset ) ); 553 register unsigned int* plock = (unsigned int*)&_tty_channel[channel].lock; 554 555 asm volatile ( 556 "1: \n" 557 "ll $2, 0(%0) \n" // $2 <= _tty_lock 558 "bnez $2, 1b \n" // retry if busy 559 "li $3, 1 \n" // prepare argument for sc 560 "sc $3, 0(%0) \n" // try to set _tty_busy 561 "beqz $3, 1b \n" // retry if not atomic 562 ::"r"(plock) :"$2","$3"); 550 563 } 551 564 … … 556 569 in_drivers void _tty_release_lock( unsigned int channel ) 557 570 { 558 unsigned int base = (unsigned int)&seg_tty_base; 559 unsigned int offset = (TTY_CONFIG + channel*TTY_SPAN) << 2; 560 _word_extended_write( CLUSTER_IO, base + offset, 0 ); 571 _tty_channel[channel].lock = 0; 561 572 } 562 573 … … 813 824 unsigned int offset = (index*TTY_SPAN + TTY_READ) << 2; 814 825 815 _tty_ get_buf[index]= _byte_extended_read(CLUSTER_IO, base + offset);816 _tty_ get_full[index]= 1; // signals character available826 _tty_channel[index].get_buf = _byte_extended_read(CLUSTER_IO, base + offset); 827 _tty_channel[index].get_full = 1; // signals character available 817 828 } 818 829 … … 872 883 // reset the _ioc_done variable to zero, and releases the _ioc_lock variable. 873 884 /////////////////////////////////////////////////////////////////////////////////////// 874 // If USE_ RAMDISK is set, we access a "virtual" block device controlerimplemented885 // If USE_IOC_RDK is set, we access a "virtual" block device controler implemented 875 886 // as a memory-mapped segment in cluster [0,0] at address seg_ramdisk_base. 876 887 // The tranfer being fully synchronous, the IOC interrupt is not activated. … … 910 921 _ioc_get_lock(); 911 922 912 if ( USE_ RAMDISK ) // we use an extended_memcpy923 if ( USE_IOC_RDK ) // we use an extended_memcpy 913 924 { 914 925 unsigned int src_address = (unsigned int)buffer; … … 953 964 _ioc_get_lock(); 954 965 955 if ( USE_ RAMDISK ) // we use an extended_memcpy966 if ( USE_IOC_RDK ) // we use an extended_memcpy 956 967 { 957 968 unsigned int dst_address = (unsigned int)buffer; -
trunk/softs/soft_hello_giet/Makefile
r623 r810 4 4 DU = mipsel-unknown-elf-objdump 5 5 6 OBJS = 7 8 9 6 OBJS = reset.o \ 7 giet.o \ 8 stdio.o \ 9 main.o 10 10 11 CFLAGS = -Wall -mno-gpopt -ffreestanding -fomit-frame-pointer -mips32 -ggdb11 CFLAGS = -Wall -mno-gpopt -ffreestanding -fomit-frame-pointer -mips32 12 12 13 13 GIET = ../giet_tsar 14 14 15 bin.soft: $(OBJS) ldscript16 $(LD) -o $@ -T ldscript$(OBJS)15 bin.soft: $(OBJS) giet.ld 16 $(LD) -o $@ -T giet.ld $(OBJS) 17 17 $(DU) -D $@ > $@.txt 18 18 … … 33 33 $(DU) -D $@ > $@.txt 34 34 35 giet.ld: giet.ld.in 36 $(CC) -x c -P -E -I. $< -o $@ 37 35 38 clean: 36 rm -f *.o bin.soft *.txt core term* temp 39 rm -f *.o bin.soft *.txt core term* temp giet.ld -
trunk/softs/soft_sort_giet/Makefile
r744 r810 13 13 GIET = ../giet_tsar 14 14 15 bin.soft: $(OBJS) ldscript16 $(LD) -o $@ -T ldscript$(OBJS)15 bin.soft: $(OBJS) giet.ld 16 $(LD) -o $@ -T giet.ld $(OBJS) 17 17 $(DU) -D $@ > $@.txt 18 18 … … 33 33 $(DU) -D $@ > $@.txt 34 34 35 giet.ld: giet.ld.in 36 $(CC) -x c -P -E -I. $< -o $@ 37 35 38 clean: 36 rm -f *.o bin.soft *.txt core term* temp 39 rm -f *.o bin.soft *.txt core term* temp giet.ld -
trunk/softs/soft_transpose_giet/Makefile
r744 r810 9 9 main.o 10 10 11 CFLAGS = -Wall -mno-gpopt -ffreestanding -fomit-frame-pointer -mips32 \ 12 -msoft-float -O2 \ 13 # -ggdb -mlong-calls 11 CFLAGS = -Wall -mno-gpopt -ffreestanding -fomit-frame-pointer -mips32 14 12 15 13 GIET = ../giet_tsar 16 14 17 bin.soft: $(OBJS) ldscript18 $(LD) -o $@ -T ldscript$(OBJS)15 bin.soft: $(OBJS) giet.ld 16 $(LD) -o $@ -T giet.ld $(OBJS) 19 17 $(DU) -D $@ > $@.txt 20 18 21 19 reset.o: $(GIET)/reset.S hard_config.h 22 $(CC) -I. -I$(GIET)$(CFLAGS) -c -o $@ $<20 $(CC) -I. $(CFLAGS) -c -o $@ $< 23 21 $(DU) -D $@ > $@.txt 24 22 … … 35 33 $(DU) -D $@ > $@.txt 36 34 35 giet.ld: giet.ld.in 36 $(CC) -x c -P -E -I. $< -o $@ 37 37 38 clean: 38 rm -f *.o bin.soft *.txt core term* temp 39 rm -f *.o bin.soft *.txt core term* temp giet.ld -
trunk/softs/soft_transpose_giet/hard_config.h
r744 r810 1 /*******************************************************************/ 2 /* This file define various hardware parameters that are used by */ 3 /* both the giet_tsar OS and by the hardware (top.cpp file) */ 4 /*******************************************************************/ 1 /* Generated by genmap for tsar_iob_2_2_4 */ 5 2 6 #ifndef _HARD_CONFIG_H7 #define _HARD_CONFIG_H3 #ifndef HARD_CONFIG_H 4 #define HARD_CONFIG_H 8 5 9 #define X_SIZE 6 10 #define Y_SIZE 6 11 #define X_WIDTH 4 12 #define Y_WIDTH 4 13 #define X_IO 0//(X_SIZE - 1) 14 #define Y_IO 0//(Y_SIZE - 1) 6 /* General platform parameters */ 15 7 16 #define NB_PROCS_MAX 4 8 #define X_SIZE 2 9 #define Y_SIZE 2 10 #define X_WIDTH 4 11 #define Y_WIDTH 4 12 #define P_WIDTH 2 13 #define X_IO 0 14 #define Y_IO 0 15 #define NB_PROCS_MAX 4 16 #define IRQ_PER_PROCESSOR 4 17 #define RESET_ADDRESS 0xbfc00000 18 #define NB_TOTAL_PROCS 16 17 19 18 #define USE_RAMDISK 0 19 #define USE_PIC 1 20 /* Peripherals */ 20 21 21 #define NB_DMA_CHANNELS 0 22 #define NB_HBA_CHANNELS 0 23 #define NB_NIC_CHANNELS 0 24 #define NB_CMA_CHANNELS 0 25 #define NB_TTY_CHANNELS 1 22 #define NB_TTY_CHANNELS 1 23 #define NB_IOC_CHANNELS 1 24 #define NB_NIC_CHANNELS 2 25 #define NB_CMA_CHANNELS 4 26 #define NB_TIM_CHANNELS 0 27 #define NB_DMA_CHANNELS 4 26 28 27 #endif //_HARD_CONFIG_H 29 #define USE_XCU 1 30 #define USE_IOB 1 31 #define USE_PIC 1 32 #define USE_FBF 1 33 34 #define USE_IOC_BDV 1 35 #define USE_IOC_SPI 0 36 #define USE_IOC_HBA 0 37 #define USE_IOC_RDK 0 38 39 #define FBUF_X_SIZE 128 40 #define FBUF_Y_SIZE 128 41 42 #define XCU_NB_INPUTS 16 43 44 /* base addresses and sizes for physical segments */ 45 46 #define SEG_RAM_BASE 0x0 47 #define SEG_RAM_SIZE 0x40000 48 49 #define SEG_CMA_BASE 0xb6000000 50 #define SEG_CMA_SIZE 0x4000 51 52 #define SEG_DMA_BASE 0xb1000000 53 #define SEG_DMA_SIZE 0x4000 54 55 #define SEG_FBF_BASE 0xb7000000 56 #define SEG_FBF_SIZE 0x4000 57 58 #define SEG_ICU_BASE 0xffffffff 59 #define SEG_ICU_SIZE 0x0 60 61 #define SEG_IOB_BASE 0xbe000000 62 #define SEG_IOB_SIZE 0x1000 63 64 #define SEG_IOC_BASE 0xb3000000 65 #define SEG_IOC_SIZE 0x1000 66 67 #define SEG_MMC_BASE 0xb2000000 68 #define SEG_MMC_SIZE 0x1000 69 70 #define SEG_MWR_BASE 0xffffffff 71 #define SEG_MWR_SIZE 0x0 72 73 #define SEG_ROM_BASE 0xbfc00000 74 #define SEG_ROM_SIZE 0x8000 75 76 #define SEG_SIM_BASE 0xb9000000 77 #define SEG_SIM_SIZE 0x1000 78 79 #define SEG_NIC_BASE 0xb5000000 80 #define SEG_NIC_SIZE 0x80000 81 82 #define SEG_PIC_BASE 0xb8000000 83 #define SEG_PIC_SIZE 0x1000 84 85 #define SEG_TIM_BASE 0xffffffff 86 #define SEG_TIM_SIZE 0x0 87 88 #define SEG_TTY_BASE 0xb4000000 89 #define SEG_TTY_SIZE 0x4000 90 91 #define SEG_XCU_BASE 0xb0000000 92 #define SEG_XCU_SIZE 0x1000 93 94 #define SEG_RDK_BASE 0xffffffff 95 #define SEG_RDK_SIZE 0x0 96 97 #define PERI_CLUSTER_INCREMENT 0x10000 98 99 /* physical base addresses for identity mapped vsegs */ 100 /* used by the GietVM OS */ 101 102 #define SEG_BOOT_MAPPING_BASE 0x0 103 #define SEG_BOOT_MAPPING_SIZE 0x80000 104 105 #define SEG_BOOT_CODE_BASE 0x80000 106 #define SEG_BOOT_CODE_SIZE 0x40000 107 108 #define SEG_BOOT_DATA_BASE 0xc0000 109 #define SEG_BOOT_DATA_SIZE 0x80000 110 111 #define SEG_BOOT_STACK_BASE 0x140000 112 #define SEG_BOOT_STACK_SIZE 0x50000 113 #endif
Note: See TracChangeset
for help on using the changeset viewer.