diff --git a/MPSoC/mutekh/arch/soclib/deployinfo.h b/MPSoC/mutekh/arch/soclib/deployinfo.h deleted file mode 100644 index 6e62ce89676c458566facd6a8ff7c0bf76961dd0..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/deployinfo.h +++ /dev/null @@ -1,7 +0,0 @@ - -#define CACHED_RAM0_NAME cram0 -#define CACHED_RAM0_ADDR 0x10000000 -#define CACHED_RAM0_SIZE 0x80000 -#define DEPLOY_RAM0_NAME uram0 -#define DEPLOY_RAM0_ADDR 0x10280000 -#define DEPLOY_RAM0_SIZE 0x80000 diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h b/MPSoC/mutekh/arch/soclib/deployinfo_map.h deleted file mode 100644 index 205c5bc796969e4a769a1dd3a795a9cb60f72b80..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h +++ /dev/null @@ -1,118 +0,0 @@ - -#define MAP_A\ - - .channel0 : {*(section_channel0)} > uram0 - - .channel1 : {*(section_channel1)} > uram0 - - .channel2 : {*(section_channel2)} > uram0 - - .channel3 : {*(section_channel3)} > uram0 - - .channel4 : {*(section_channel4)} > uram0 - - .channel5 : {*(section_channel5)} > uram0 - - .channel6 : {*(section_channel6)} > uram0 - - .channel7 : {*(section_channel7)} > uram0 - - .channel8 : {*(section_channel8)} > uram0 - - .channel9 : {*(section_channel9)} > uram0 - - .channel10 : {*(section_channel10)} > uram0 - - .channel11 : {*(section_channel11)} > uram0 - - .channel12 : {*(section_channel12)} > uram0 - - .channel13 : {*(section_channel13)} > uram0 - - .channel14 : {*(section_channel14)} > uram0 - - .channel15 : {*(section_channel15)} > uram0 - - .channel16 : {*(section_channel16)} > uram0 - - .channel17 : {*(section_channel17)} > uram0 - - .channel18 : {*(section_channel18)} > uram0 - - .channel19 : {*(section_channel19)} > uram0 - - .channel20 : {*(section_channel20)} > uram0 - - .channel21 : {*(section_channel21)} > uram0 - - .channel22 : {*(section_channel22)} > uram0 - - .channel23 : {*(section_channel23)} > uram0 - - .channel24 : {*(section_channel24)} > uram0 - - .channel25 : {*(section_channel25)} > uram0 - - .channel26 : {*(section_channel26)} > uram0 - - .channel27 : {*(section_channel27)} > uram0 - - .channel28 : {*(section_channel28)} > uram0 - - .lock0 : { *(section_lock0)} > uram0 - - .lock1 : { *(section_lock1)} > uram0 - - .lock2 : { *(section_lock2)} > uram0 - - .lock3 : { *(section_lock3)} > uram0 - - .lock4 : { *(section_lock4)} > uram0 - - .lock5 : { *(section_lock5)} > uram0 - - .lock6 : { *(section_lock6)} > uram0 - - .lock7 : { *(section_lock7)} > uram0 - - .lock8 : { *(section_lock8)} > uram0 - - .lock9 : { *(section_lock9)} > uram0 - - .lock10 : { *(section_lock10)} > uram0 - - .lock11 : { *(section_lock11)} > uram0 - - .lock12 : { *(section_lock12)} > uram0 - - .lock13 : { *(section_lock13)} > uram0 - - .lock14 : { *(section_lock14)} > uram0 - - .lock15 : { *(section_lock15)} > uram0 - - .lock16 : { *(section_lock16)} > uram0 - - .lock17 : { *(section_lock17)} > uram0 - - .lock18 : { *(section_lock18)} > uram0 - - .lock19 : { *(section_lock19)} > uram0 - - .lock20 : { *(section_lock20)} > uram0 - - .lock21 : { *(section_lock21)} > uram0 - - .lock22 : { *(section_lock22)} > uram0 - - .lock23 : { *(section_lock23)} > uram0 - - .lock24 : { *(section_lock24)} > uram0 - - .lock25 : { *(section_lock25)} > uram0 - - .lock26 : { *(section_lock26)} > uram0 - - .lock27 : { *(section_lock27)} > uram0 - - .lock28 : { *(section_lock28)} > uram0 diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06 b/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06 deleted file mode 100644 index 1be00be913f704ba2487c2d2753d85e2693a876f..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06 +++ /dev/null @@ -1,10 +0,0 @@ - -#define MAP_A\ - - .channel0 : { \ -*(section_channel0)\ -} > uram0\ - - .lock0 : { \ -*(section_lock0)\ -} > vci_locks\ diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06 b/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06 deleted file mode 100644 index 1be00be913f704ba2487c2d2753d85e2693a876f..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06 +++ /dev/null @@ -1,10 +0,0 @@ - -#define MAP_A\ - - .channel0 : { \ -*(section_channel0)\ -} > uram0\ - - .lock0 : { \ -*(section_lock0)\ -} > vci_locks\ diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_ram.h b/MPSoC/mutekh/arch/soclib/deployinfo_ram.h deleted file mode 100644 index 9b0e9b56c19a925fcc5cacf2e0caeb0430dd5ef0..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/deployinfo_ram.h +++ /dev/null @@ -1,175 +0,0 @@ - -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL) : ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL) : ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL) : ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL) : ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL) : ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL) : ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL) : ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL) : ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL) : ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL) : ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL) : ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL) : ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL) : ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL) : ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL) : ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL) : ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL) : ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL) : ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL) : ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL) : ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -#if defined(DEPLOY_RAM10_NAME) - DEPLOY_RAM10_NAME (RWAL) : ORIGIN = DEPLOY_RAM10_ADDR, LENGTH = DEPLOY_RAM10_SIZE -#endif -#if defined(CACHED_RAM10_NAME) - CACHED_RAM10_NAME (RWAL) : ORIGIN = CACHED_RAM10_ADDR, LENGTH = CACHED_RAM10_SIZE -#endif -#if defined(DEPLOY_RAM11_NAME) - DEPLOY_RAM11_NAME (RWAL) : ORIGIN = DEPLOY_RAM11_ADDR, LENGTH = DEPLOY_RAM11_SIZE -#endif -#if defined(CACHED_RAM11_NAME) - CACHED_RAM11_NAME (RWAL) : ORIGIN = CACHED_RAM11_ADDR, LENGTH = CACHED_RAM11_SIZE -#endif -#if defined(DEPLOY_RAM12_NAME) - DEPLOY_RAM12_NAME (RWAL) : ORIGIN = DEPLOY_RAM12_ADDR, LENGTH = DEPLOY_RAM12_SIZE -#endif -#if defined(CACHED_RAM12_NAME) - CACHED_RAM12_NAME (RWAL) : ORIGIN = CACHED_RAM12_ADDR, LENGTH = CACHED_RAM12_SIZE -#endif -#if defined(DEPLOY_RAM13_NAME) - DEPLOY_RAM13_NAME (RWAL) : ORIGIN = DEPLOY_RAM13_ADDR, LENGTH = DEPLOY_RAM13_SIZE -#endif -#if defined(CACHED_RAM13_NAME) - CACHED_RAM13_NAME (RWAL) : ORIGIN = CACHED_RAM13_ADDR, LENGTH = CACHED_RAM13_SIZE -#endif -#if defined(DEPLOY_RAM14_NAME) - DEPLOY_RAM14_NAME (RWAL) : ORIGIN = DEPLOY_RAM14_ADDR, LENGTH = DEPLOY_RAM14_SIZE -#endif -#if defined(CACHED_RAM14_NAME) - CACHED_RAM14_NAME (RWAL) : ORIGIN = CACHED_RAM14_ADDR, LENGTH = CACHED_RAM14_SIZE -#endif -#if defined(DEPLOY_RAM15_NAME) - DEPLOY_RAM15_NAME (RWAL) : ORIGIN = DEPLOY_RAM15_ADDR, LENGTH = DEPLOY_RAM15_SIZE -#endif -#if defined(CACHED_RAM15_NAME) - CACHED_RAM15_NAME (RWAL) : ORIGIN = CACHED_RAM15_ADDR, LENGTH = CACHED_RAM15_SIZE -#endif -#if defined(DEPLOY_RAM16_NAME) - DEPLOY_RAM16_NAME (RWAL) : ORIGIN = DEPLOY_RAM16_ADDR, LENGTH = DEPLOY_RAM16_SIZE -#endif -#if defined(CACHED_RAM16_NAME) - CACHED_RAM16_NAME (RWAL) : ORIGIN = CACHED_RAM16_ADDR, LENGTH = CACHED_RAM16_SIZE -#endif -#if defined(DEPLOY_RAM17_NAME) - DEPLOY_RAM17_NAME (RWAL) : ORIGIN = DEPLOY_RAM17_ADDR, LENGTH = DEPLOY_RAM17_SIZE -#endif -#if defined(CACHED_RAM17_NAME) - CACHED_RAM17_NAME (RWAL) : ORIGIN = CACHED_RAM17_ADDR, LENGTH = CACHED_RAM17_SIZE -#endif -#if defined(DEPLOY_RAM18_NAME) - DEPLOY_RAM18_NAME (RWAL) : ORIGIN = DEPLOY_RAM18_ADDR, LENGTH = DEPLOY_RAM18_SIZE -#endif -#if defined(CACHED_RAM18_NAME) - CACHED_RAM18_NAME (RWAL) : ORIGIN = CACHED_RAM18_ADDR, LENGTH = CACHED_RAM18_SIZE -#endif -#if defined(DEPLOY_RAM19_NAME) - DEPLOY_RAM19_NAME (RWAL) : ORIGIN = DEPLOY_RAM19_ADDR, LENGTH = DEPLOY_RAM19_SIZE -#endif -#if defined(CACHED_RAM19_NAME) - CACHED_RAM19_NAME (RWAL) : ORIGIN = CACHED_RAM19_ADDR, LENGTH = CACHED_RAM19_SIZE -#endif -#if defined(DEPLOY_RAM20_NAME) - DEPLOY_RAM20_NAME (RWAL) : ORIGIN = DEPLOY_RAM20_ADDR, LENGTH = DEPLOY_RAM20_SIZE -#endif -#if defined(CACHED_RAM20_NAME) - CACHED_RAM20_NAME (RWAL) : ORIGIN = CACHED_RAM20_ADDR, LENGTH = CACHED_RAM20_SIZE -#endif -#if defined(DEPLOY_RAM21_NAME) - DEPLOY_RAM21_NAME (RWAL) : ORIGIN = DEPLOY_RAM21_ADDR, LENGTH = DEPLOY_RAM21_SIZE -#endif -#if defined(CACHED_RAM21_NAME) - CACHED_RAM21_NAME (RWAL) : ORIGIN = CACHED_RAM21_ADDR, LENGTH = CACHED_RAM21_SIZE -#endif -#if defined(DEPLOY_RAM22_NAME) - DEPLOY_RAM22_NAME (RWAL) : ORIGIN = DEPLOY_RAM22_ADDR, LENGTH = DEPLOY_RAM22_SIZE -#endif -#if defined(CACHED_RAM22_NAME) - CACHED_RAM22_NAME (RWAL) : ORIGIN = CACHED_RAM22_ADDR, LENGTH = CACHED_RAM22_SIZE -#endif -#if defined(DEPLOY_RAM23_NAME) - DEPLOY_RAM23_NAME (RWAL) : ORIGIN = DEPLOY_RAM23_ADDR, LENGTH = DEPLOY_RAM23_SIZE -#endif -#if defined(CACHED_RAM23_NAME) - CACHED_RAM23_NAME (RWAL) : ORIGIN = CACHED_RAM23_ADDR, LENGTH = CACHED_RAM23_SIZE -#endif -#if defined(DEPLOY_RAM24_NAME) - DEPLOY_RAM24_NAME (RWAL) : ORIGIN = DEPLOY_RAM24_ADDR, LENGTH = DEPLOY_RAM24_SIZE -#endif -#if defined(CACHED_RAM24_NAME) - CACHED_RAM24_NAME (RWAL) : ORIGIN = CACHED_RAM24_ADDR, LENGTH = CACHED_RAM24_SIZE -#endif -#if defined(DEPLOY_RAM25_NAME) - DEPLOY_RAM25_NAME (RWAL) : ORIGIN = DEPLOY_RAM25_ADDR, LENGTH = DEPLOY_RAM25_SIZE -#endif -#if defined(CACHED_RAM25_NAME) - CACHED_RAM25_NAME (RWAL) : ORIGIN = CACHED_RAM25_ADDR, LENGTH = CACHED_RAM25_SIZE -#endif -#if defined(DEPLOY_RAM26_NAME) - DEPLOY_RAM26_NAME (RWAL) : ORIGIN = DEPLOY_RAM26_ADDR, LENGTH = DEPLOY_RAM26_SIZE -#endif -#if defined(CACHED_RAM26_NAME) - CACHED_RAM26_NAME (RWAL) : ORIGIN = CACHED_RAM26_ADDR, LENGTH = CACHED_RAM26_SIZE -#endif -#if defined(DEPLOY_RAM27_NAME) - DEPLOY_RAM27_NAME (RWAL) : ORIGIN = DEPLOY_RAM27_ADDR, LENGTH = DEPLOY_RAM27_SIZE -#endif -#if defined(CACHED_RAM27_NAME) - CACHED_RAM27_NAME (RWAL) : ORIGIN = CACHED_RAM27_ADDR, LENGTH = CACHED_RAM27_SIZE -#endif -#if defined(DEPLOY_RAM28_NAME) - DEPLOY_RAM28_NAME (RWAL) : ORIGIN = DEPLOY_RAM28_ADDR, LENGTH = DEPLOY_RAM28_SIZE -#endif -#if defined(CACHED_RAM28_NAME) - CACHED_RAM28_NAME (RWAL) : ORIGIN = CACHED_RAM28_ADDR, LENGTH = CACHED_RAM28_SIZE -#endif diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05 deleted file mode 100644 index af21628dbc0b4a3af509c2f219c1a3dadf80d93d..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05 +++ /dev/null @@ -1,255 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS en cas de besoin (actually unused) -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05 deleted file mode 100644 index cb874fee26a63d320682de6282996324906def6f..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05 +++ /dev/null @@ -1,333 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS en cas de besoin (actually unused) -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(DEPLOY_RAM10_NAME) - DEPLOY_RAM10_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM10_NAME) - CACHED_RAM10_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM11_NAME) - DEPLOY_RAM11_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM11_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM12_NAME) - DEPLOY_RAM12_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM12_NAME) - CACHED_RAM12_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM13_NAME) - DEPLOY_RAM13_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM13_NAME) - CACHED_RAM13_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM14_NAME) - DEPLOY_RAM13_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM14_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM15_NAME) - DEPLOY_RAM15_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM15_NAME) - CACHED_RAM15_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM16_NAME) - DEPLOY_RAM16_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM16_NAME) - CACHED_RAM16_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM17_NAME) - DEPLOY_RAM17_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM17_NAME) - CACHED_RAM17_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM18_NAME) - DEPLOY_RAM18_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM18_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM19_NAME) - DEPLOY_RAM19_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM19_NAME) - CACHED_RAM19_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -#if defined(DEPLOY_RAM20_NAME) - DEPLOY_RAM20_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM20_NAME) - CACHED_RAM20_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM21_NAME) - DEPLOY_RAM21_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM21_NAME) - CACHED_RAM21_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM22_NAME) - DEPLOY_RAM22_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM22_NAME) - CACHED_RAM22_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM23_NAME) - DEPLOY_RAM23_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM24_NAME) - DEPLOY_RAM24_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM25_NAME) - DEPLOY_RAM25_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM26_NAME) - DEPLOY_RAM26_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM27_NAME) - DEPLOY_RAM27_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM28_NAME) - DEPLOY_RAM28_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM29_NAME) - DEPLOY_RAM29_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05 deleted file mode 100644 index e5166f6bbd9630b182d75158ae07ccb636cd1fda..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05 +++ /dev/null @@ -1,252 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 - -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017 deleted file mode 100644 index af21628dbc0b4a3af509c2f219c1a3dadf80d93d..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017 +++ /dev/null @@ -1,255 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS en cas de besoin (actually unused) -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06 deleted file mode 100644 index bb1be4aabe578e0dcb71a256cbbffe50dc29c207..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06 +++ /dev/null @@ -1,255 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08 deleted file mode 100644 index bb1be4aabe578e0dcb71a256cbbffe50dc29c207..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08 +++ /dev/null @@ -1,255 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06 deleted file mode 100644 index bb1be4aabe578e0dcb71a256cbbffe50dc29c207..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06 +++ /dev/null @@ -1,255 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 -//19.05. une seule RAMLOCKS -vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100 -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//DG 19.5. a single RAMLOCKS -// .lock0 : { *(section_lock0)} > vci_locks -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5 deleted file mode 100644 index e78a51e50d8eff419a88a1319eb8849d711de704..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5 +++ /dev/null @@ -1,228 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 - -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5 deleted file mode 100644 index e5166f6bbd9630b182d75158ae07ccb636cd1fda..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5 +++ /dev/null @@ -1,252 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000 - -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(CACHED_RAM0_NAME) - CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(CACHED_RAM1_NAME) - CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(CACHED_RAM2_NAME) - CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -#if defined(CACHED_RAM3_NAME) - CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE -#endif -#if defined(CACHED_RAM4_NAME) - CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE -#endif -#if defined(CACHED_RAM5_NAME) - CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE -#endif -#if defined(CACHED_RAM6_NAME) - CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE -#endif -#if defined(CACHED_RAM7_NAME) - CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE -#endif -#if defined(CACHED_RAM8_NAME) - CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE -#endif -#if defined(CACHED_RAM9_NAME) - CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav b/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav deleted file mode 100644 index e1ce44fe8cf64dd855e5212e4e29bb79d22bbf54..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav +++ /dev/null @@ -1,222 +0,0 @@ -/* The following contains information extracted from the deployment diagram */ - -#include <arch/soclib/deployinfo.h> - -/* - We may have aliasing in rom/except/boot segments. If so, we merge - all we can in mem_rom segment. - - We may also have alisasing of ram/rom (for bootloaded kernels), so - we may merge all we can in mem_ram. - */ - -/* ram + rom */ -#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR -# define mem_rom mem_ram -# if defined(CONFIG_CPU_RESET_HANDLER) -# error You may not have a reset handler with rom in ram -# endif -#endif - -/* The first two may only happen if reset handler is present */ -#if defined(CONFIG_CPU_RESET_HANDLER) - -/* boot + rom */ -# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR -# define mem_boot mem_rom -# endif - -/* exception + boot - * - * boot may already be rom, and we'll have cascading defines */ -# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \ - (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR) -# define mem_except mem_boot -# endif - -#endif /* end if reset handler */ - - -/* exception + rom */ -#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) || \ - !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) && \ - !defined(mem_except) -# define mem_except mem_rom -#endif - - -/* - Implement .data from rom (copied at boot) by putting all r/w data at - end of mem_rom. This is used for rom-only bootloaders. - */ -#if defined(CONFIG_DATA_FROM_ROM) -# define __AT_MEM_ROM AT>mem_rom -#else -# define __AT_MEM_ROM -#endif - - -MEMORY -{ -#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot) - mem_boot (RXAL) : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE -#endif -#if !defined(mem_except) - mem_except (RXAL) : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000 -#endif -#ifdef CONFIG_HET_BUILD - mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE -#else -# define mem_hetrom mem_rom -#endif -#if !defined(mem_rom) - mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE -#endif - mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE -//ajoute DG provisiore -mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000 -mwmrd_ram (RWAL): ORIGIN = 0x20200000, LENGTH = 0x00003000 - -//ajoute DG -#if defined(DEPLOY_RAM0_NAME) - DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE -#endif -#if defined(DEPLOY_RAM1_NAME) - DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE -#endif -#if defined(DEPLOY_RAM2_NAME) - DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE -#endif -#if defined(DEPLOY_RAM3_NAME) - DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE -#endif -#if defined(DEPLOY_RAM4_NAME) - DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE -#endif -#if defined(DEPLOY_RAM5_NAME) - DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE -#endif -#if defined(DEPLOY_RAM6_NAME) - DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE -#endif -#if defined(DEPLOY_RAM7_NAME) - DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE -#endif -#if defined(DEPLOY_RAM8_NAME) - DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE -#endif -#if defined(DEPLOY_RAM9_NAME) - DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE -#endif -//fin ajoute DG -} - -SECTIONS -{ -#if defined(CONFIG_CPU_RESET_HANDLER) - .boot : { - KEEP(*(.boot*)) - } > mem_boot -#endif - - .text : { - *(.init*) - *(.text*) - *(.glue*) - *(.got2) - } > mem_hetrom - - .rodata : { - *(.rodata*) - . = ALIGN(4); - global_driver_registry = .; - KEEP(*(.drivers)) - global_driver_registry_end = .; - } > mem_rom - - .excep : { -#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) - /* On some architectures, exception vector is freely - * relocatable up to a given alignment. - * - * We must set the correct pointer ASAP in the boot sequence, - * dont forget reset vector is optional... - */ - . = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN); -#endif - __exception_base_ptr = .; - KEEP(*(.excep*)) - } > mem_except - - - /* TLS/CLS are templates for newly allocated contexts/cpu's - * private data. They are always read-only. - * - * On a non-smp machine, cpudata is read-write, but does not fall - * in the cpudata section (it is normal global data), so we can - * keep on linking this as r/o. - */ - - /* CPU local data section */ - .cpudata 0x0 : { *(.cpudata*) } AT> mem_rom - - __cpu_data_start = LOADADDR(.cpudata); - __cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata); - - /* Task local data section */ - .contextdata 0x0 : { *(.contextdata*) } AT> mem_rom - - __context_data_start = LOADADDR(.contextdata); - __context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata); - - .data : { - __data_start = ABSOLUTE(.); - *(.sdata*) - *(.data*) - *(.cpuarchdata*) - } > mem_ram __AT_MEM_ROM -//ajoute DG -#include <arch/soclib/deployinfo_map.h> -//MAP_A -//fin ajoute DG - __data_load_start = LOADADDR(.data); - __data_load_end = LOADADDR(.data) + SIZEOF(.data); - -// #if defined(CONFIG_HET_BUILD) -// /DISCARD/ : { -// #else - .bss : { - __bss_start = ABSOLUTE(.); -// #endif - *(.sbss*) - *(COMMON) - *(.common*) - *(.scommon*) - *(.bss*) -// #if !defined(CONFIG_HET_BUILD) - __bss_end = ABSOLUTE(.); - } > mem_ram -// #else -// } - -// __bss_end = 0; -// __bss_start = 0; -// #endif - - __system_uncached_heap_start = .; - __system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram); - -#if defined(CONFIG_CPU_RESET_HANDLER) - . = ALIGN(CONFIG_HEXO_STACK_ALIGN); - __initial_stack = __system_uncached_heap_end; -#endif - - /* GOT section */ - /DISCARD/ : { *(.eh_frame) } - -#if !defined(CONFIG_CPU_NIOS2) - ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug") -#endif -} - -ENTRY(arch_init) diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.py b/MPSoC/mutekh/bin/test similarity index 100% rename from MPSoC/soclib/utils/lib/python/soclib_builder/__init__.py rename to MPSoC/mutekh/bin/test diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-07-12 b/MPSoC/mutekh/libmwmr/mwmr.config-07-12 deleted file mode 100644 index 895f3e2a010822ec422b4f419854c1e9d93f9138..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr.config-07-12 +++ /dev/null @@ -1,38 +0,0 @@ - -%config CONFIG_MWMR - desc Mwmr middleware support - module libmwmr - single CONFIG_MWMR_SOCLIB CONFIG_MWMR_PTHREAD -%config end - -%config CONFIG_MWMR_SOCLIB - desc Mwmr on SOCLIB, with hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_MUTEK_SCHEDULER - depend CONFIG_ARCH_SOCLIB -%config end - -%config CONFIG_MWMR_PTHREAD - desc Mwmr on Pthreads, with no hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_PTHREAD -%config end - -%config CONFIG_MWMR_INSTRUMENTATION - desc Mwmr timing observation, only under SRL - parent CONFIG_MWMR - depend CONFIG_MWMR_SOCLIB - depend CONFIG_SRL -%config end - -%config CONFIG_MWMR_USE_RAMLOCKS - desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend - parent CONFIG_MWMR - depend CONFIG_SRL -%config end - -%config CONFIG_MWMR_LOCKFREE - desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend - parent CONFIG_MWMR_SOCLIB - depend CONFIG_SRL -%config end diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-1-8 b/MPSoC/mutekh/libmwmr/mwmr.config-1-8 deleted file mode 100644 index e7573dcd391fe2ecba70b5d78126ae5d6ca4cec2..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr.config-1-8 +++ /dev/null @@ -1,38 +0,0 @@ - -%config CONFIG_MWMR - desc Mwmr middleware support - module libmwmr - single CONFIG_MWMR_SOCLIB #CONFIG_MWMR_PTHREAD -%config end - -%config CONFIG_MWMR_SOCLIB - desc Mwmr on SOCLIB, with hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_MUTEK_SCHEDULER - depend CONFIG_ARCH_SOCLIB -%config end - -%config CONFIG_MWMR_PTHREAD - desc Mwmr on Pthreads, with no hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_PTHREAD -%config end - -#%config CONFIG_MWMR_INSTRUMENTATION -# desc Mwmr timing observation, only under SRL -# parent CONFIG_MWMR -# depend CONFIG_MWMR_SOCLIB -# depend CONFIG_SRL -#%config end - -#%config CONFIG_MWMR_USE_RAMLOCKS -# desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend -# parent CONFIG_MWMR -# depend CONFIG_SRL -#%config end - -#%config CONFIG_MWMR_LOCKFREE -# desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend -# parent CONFIG_MWMR_SOCLIB -# depend CONFIG_SRL -#%config end diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-23-06 b/MPSoC/mutekh/libmwmr/mwmr.config-23-06 deleted file mode 100644 index 895f3e2a010822ec422b4f419854c1e9d93f9138..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr.config-23-06 +++ /dev/null @@ -1,38 +0,0 @@ - -%config CONFIG_MWMR - desc Mwmr middleware support - module libmwmr - single CONFIG_MWMR_SOCLIB CONFIG_MWMR_PTHREAD -%config end - -%config CONFIG_MWMR_SOCLIB - desc Mwmr on SOCLIB, with hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_MUTEK_SCHEDULER - depend CONFIG_ARCH_SOCLIB -%config end - -%config CONFIG_MWMR_PTHREAD - desc Mwmr on Pthreads, with no hardware protocol compatibility - parent CONFIG_MWMR - depend CONFIG_PTHREAD -%config end - -%config CONFIG_MWMR_INSTRUMENTATION - desc Mwmr timing observation, only under SRL - parent CONFIG_MWMR - depend CONFIG_MWMR_SOCLIB - depend CONFIG_SRL -%config end - -%config CONFIG_MWMR_USE_RAMLOCKS - desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend - parent CONFIG_MWMR - depend CONFIG_SRL -%config end - -%config CONFIG_MWMR_LOCKFREE - desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend - parent CONFIG_MWMR_SOCLIB - depend CONFIG_SRL -%config end diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08 deleted file mode 100644 index 3134edf3001c627ad8c240518bb530a7e990712f..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08 +++ /dev/null @@ -1,401 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -# include <stdio.h> -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("use ramlocks\n"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) - pthread_yield(); -# else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -printf("do not use ramlocks\n"); -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) - printf("use pthread; lock address %x value %x \n",(atomic_int_t*)&(fifo->status->lock),fifo->status->lock); - while (cpu_atomic_bit_testset((atomic_int_t*)&(fifo->status->lock), 0)) { - pthread_yield(); - } - -# else -printf("do not use pthread\n"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - printf("I am here"); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; printf("while lensw "); - while (status.usage >= fifo->gdepth) { - //DG c'est le cas d'echec pour cause de fifo pleine - printf("while status.usage "); - printf("status.usage : %x ", status.usage); - printf("fifo address : %x ", fifo); - printf("fifo->depth: %x ", fifo->depth); - printf("fifo->width: %x ", fifo->width); - printf("fifo->gdepth: %x ", fifo->gdepth); - printf("fifo->status address: %x ", fifo->status); - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); - //#elif defined(CONFIG_PTHREAD) -#elif defined(CONFIG_PTHREAD)&&defined(CONFIG_MWMR_PTHREAD) - printf("pthread yield"); - pthread_yield(); -#else - printf("cpu yield"); - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - //DG ici on peut ecrire - printf("lensw : %x ", lensw); - printf("status.usage : %x ", status.usage); - printf("fifo->gdepth: %x ", fifo->gdepth); - - while ( lensw && status.usage < fifo->gdepth ) { -printf("while lensw&& status.usage "); - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo );printf("$$$ end of write "); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017 deleted file mode 100644 index 43a31fc5407edbee8a28bb6a57ba63553b2c48e6..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017 +++ /dev/null @@ -1,377 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) - pthread_yield(); -# else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield(); - } -# else - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05 deleted file mode 100644 index 6c19991416071b68100f6544badcd2814a68fe52..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05 +++ /dev/null @@ -1,425 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> //DG 08.12. -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ - printf("##### MWMR LOCK ####"); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("##### MWMR USE RAMLOCKS ####"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD ####"); - pthread_yield(); -# else -printf("##### MWMR NON CONFIG_PTHREAD ####"); - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_SRL ####"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD2 ####"); - -while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield();printf("##### MWMR pthread_yield ####"); - } -# else -printf("##### MWMR ELSE ####"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; - //printf("###### MWMR SOCLIB WRITE100 #############\n"); - //printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ -printf("###### MWMR SOCLIB 101 #############\n"); - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; -printf("###### MWMR SOCLIB 101b #############\n"); - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -printf("###### MWMR SOCLIB 101c #############\n"); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - - printf("###### MWMR SOCLIB READ 0 #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) {printf("lensw %x \n",lensw); - size_t len; - while ( status.usage < fifo->width ) { //DG 15.12. - printf("status address %x\n", &status); - printf("status.usage %x\n", status.usage); - printf("fifo->width %x\n", fifo->width); - - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); - printf("###### MWMR SOCLIB READ 2 #############\n"); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); - printf("###### MWMR SOCLIB READ 2bis #############\n"); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif -printf("###### MWMR SOCLIB READ 3 #############\n"); - mwmr_lock( fifo ); -printf("###### MWMR SOCLIB READ 4 #############\n"); - - rehash_status( fifo, &status ); -printf("###### MWMR SOCLIB READ 4a #############\n"); - } //DG 15.12. -printf("###### MWMR SOCLIB READ 4b #############\n"); - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); -printf("###### MWMR SOCLIB READ 5 #############\n"); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } -printf("###### MWMR SOCLIB READ 6 #############\n"); - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - printf("###### MWMR SOCLIB READ 7 #############\n"); - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -printf("###### MWMR SOCLIB WRITE #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - //printf("###### MWMR SOCLIB WRITE2 #############\n"); -printf(" %x \n",fifo); -//printf(" %x \n",fifo->depth); DG 08.12. c'est ici que ca plante, fifo non initialise?? -printf("###### MWMR SOCLIB WRITE2 #############\n"); -//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock! - mwmr_lock( fifo ); - -printf("###### MWMR SOCLIB WRITE3 #############\n"); -printf("###### MWMR SOCLIB WRITE3b #############\n"); - rehash_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE3c #############\n"); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } -printf("###### MWMR SOCLIB WRITE4 #############\n"); - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - printf("###### MWMR SOCLIB WRITE4 #######lensw %x \n",lensw); -printf("###### MWMR SOCLIB WRITE4 #######fifo->gdepth %x \n",fifo->gdepth); - - if ( status.rptr <= status.wptr ){ -printf("###### MWMR SOCLIB WRITE4a #######fifo->gdepth %x \n",fifo->gdepth); - len = (fifo->gdepth - status.wptr); -printf("###### MWMR SOCLIB WRITE4a #######fifo->len %x \n",len); -} - else{ -printf("###### MWMR SOCLIB WRITE4b #######fifo->gdepth %x \n",fifo->gdepth); - len = fifo->gdepth - status.usage; - } - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - printf("######lensw %x", lensw); -printf("######len %x", len); - status.modified = 1; - } - } - writeback_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE5 #############\n"); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif -printf("###### MWMR SOCLIB WRITE6 #############\n"); - mwmr_unlock( fifo ); -printf("###### MWMR SOCLIB WRITE7 #############\n"); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06 deleted file mode 100644 index 8a921ec888794a70c84b866b60289a1a3ce7e235..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06 +++ /dev/null @@ -1,397 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> //DG 19.05. for debug -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -#define CONFIG_MWMR_USE_RAMLOCKS //DG 19.05. - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -printf("debug lock\n"); - -#ifdef CONFIG_MWMR_USE_RAMLOCKS - - printf("debug lock 0 %x \n",fifo->lock); - - while (*((uint32_t *)fifo->lock) != 0) { - -# if defined(CONFIG_PTHREAD) -printf("debug lock 1\n"); - pthread_yield(); -# else -printf("debug lock 2\n"); - cpu_interrupt_disable();printf("debug lock 3\n"); - sched_context_switch();printf("debug lock 4\n"); - cpu_interrupt_enable();printf("debug lock 5\n"); -# endif - } -printf("debug lock 6\n"); -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("debug lock 7\n"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ -printf("debug lock 8\n"); - srl_sched_wait_eq_le(&fifo->status->lock, 0); -printf("debug lock 9\n"); - } -# elif defined(CONFIG_PTHREAD) -printf("debug lock 10\n"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - printf("debug lock 11\n"); pthread_yield(); - } -# else -printf("debug lock 12\n"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - printf("**debug mwmr 0\n"); - mwmr_lock( fifo ); - printf("debug mwmr 1\n"); - rehash_status( fifo, &status ); printf("debug mwmr 2\n"); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - printf("debug mwmr 3\n"); - writeback_status( fifo, &status ); - printf("debug mwmr 4\n"); - mwmr_unlock( fifo ); printf("debug mwmr 5\n"); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); - printf("debug mwmr 6\n"); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05 deleted file mode 100644 index 43a31fc5407edbee8a28bb6a57ba63553b2c48e6..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05 +++ /dev/null @@ -1,377 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) - pthread_yield(); -# else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield(); - } -# else - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06 deleted file mode 100644 index 58c866fc6638bf7f70b984bb6341a49e80124da8..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06 +++ /dev/null @@ -1,408 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> - -//#undef CONFIG_PTHREAD - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -//#define CONFIG_MWMR_USE_RAMLOCKS -//#undef CONFIG_MWMR_USE_RAMLOCKS - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ - // printf("test %x\n", (fifo)->lock); - //printf("testbis %x\n", &((fifo)->lock)); - //printf("testlock %x \n",*((uint32_t *)fifo->lock)); - -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("test0\n"); - while (*((uint32_t *)fifo->lock) != 0) { - - //# if defined(CONFIG_PTHREAD) - // printf("test2ter\n"); - // pthread_yield(); - //# else - printf("test2bis\n"); - // cpu_interrupt_disable(); - // sched_context_switch(); - // cpu_interrupt_enable(); - - printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock); - cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);//DG 27.06. - printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock); - //# endif - } -printf("test3\n"); -#else -printf("test4a\n"); -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock); -# elif defined(CONFIG_PTHREAD) - printf("test4\n"); - printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock); - // cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield(); - printf("lock status in %x\n",(atomic_int_t*)&fifo->status->lock); - } - printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock); -# else -printf("test5\n"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -#endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - printf("call read %x\n",fifo); - - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - printf("call write %x\n",fifo); - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7 deleted file mode 100644 index bafa13dce1e4b411348ab3c111bf6f7523f95044..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7 +++ /dev/null @@ -1,383 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -# include <stdio.h> -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("use ramlocks\n"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) - pthread_yield(); -# else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -printf("do not use ramlocks\n"); -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) - printf("use pthread; lock address %x value %x \n",(atomic_int_t*)&(fifo->status->lock),fifo->status->lock); - while (cpu_atomic_bit_testset((atomic_int_t*)&(fifo->status->lock), 0)) { - pthread_yield(); - } - -# else -printf("do not use pthread\n"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne deleted file mode 100644 index 1531c4b40a61e2795fac418153d3b74e65dd50b4..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne +++ /dev/null @@ -1,409 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> //DG 08.12. -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ - printf("##### MWMR LOCK ####"); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("##### MWMR USE RAMLOCKS ####"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD ####"); - pthread_yield(); -# else -printf("##### MWMR NON CONFIG_PTHREAD ####"); - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_SRL ####"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD2 ####"); - -while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield();printf("##### MWMR pthread_yield ####"); - } -# else -printf("##### MWMR ELSE ####"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; - printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - - printf("###### MWMR SOCLIB READ 0 #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) {printf("lensw %x \n",lensw); - size_t len; - while ( status.usage < fifo->width ) { //DG 15.12. - printf("status address %x\n", &status); - printf("status.usage %x\n", status.usage); - printf("fifo->width %x\n", fifo->width); - - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); - printf("###### MWMR SOCLIB READ 2 #############\n"); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); - printf("###### MWMR SOCLIB READ 2bis #############\n"); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif -printf("###### MWMR SOCLIB READ 3 #############\n"); - mwmr_lock( fifo ); -printf("###### MWMR SOCLIB READ 4 #############\n"); - rehash_status( fifo, &status ); - } //DG 15.12. -printf("###### MWMR SOCLIB READ 4a #############\n"); - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); -printf("###### MWMR SOCLIB READ 5 #############\n"); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } -printf("###### MWMR SOCLIB READ 6 #############\n"); - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - printf("###### MWMR SOCLIB READ 7 #############\n"); - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -printf("###### MWMR SOCLIB WRITE #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - //printf("###### MWMR SOCLIB WRITE2 #############\n"); -printf(" %x \n",fifo); -//printf(" %x \n",fifo->depth); DG 08.12. c'est ici que ca plante, fifo non initialise?? -printf("###### MWMR SOCLIB WRITE2 #############\n"); -//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock! - mwmr_lock( fifo ); - -printf("###### MWMR SOCLIB WRITE3 #############\n"); -printf("###### MWMR SOCLIB WRITE3b #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } -printf("###### MWMR SOCLIB WRITE4 #############\n"); - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE5 #############\n"); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif -printf("###### MWMR SOCLIB WRITE6 #############\n"); - mwmr_unlock( fifo ); -printf("###### MWMR SOCLIB WRITE7 #############\n"); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented deleted file mode 100644 index 6c19991416071b68100f6544badcd2814a68fe52..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented +++ /dev/null @@ -1,425 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> //DG 08.12. -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ - printf("##### MWMR LOCK ####"); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("##### MWMR USE RAMLOCKS ####"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD ####"); - pthread_yield(); -# else -printf("##### MWMR NON CONFIG_PTHREAD ####"); - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_SRL ####"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD2 ####"); - -while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield();printf("##### MWMR pthread_yield ####"); - } -# else -printf("##### MWMR ELSE ####"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; - //printf("###### MWMR SOCLIB WRITE100 #############\n"); - //printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ -printf("###### MWMR SOCLIB 101 #############\n"); - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; -printf("###### MWMR SOCLIB 101b #############\n"); - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -printf("###### MWMR SOCLIB 101c #############\n"); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - - printf("###### MWMR SOCLIB READ 0 #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) {printf("lensw %x \n",lensw); - size_t len; - while ( status.usage < fifo->width ) { //DG 15.12. - printf("status address %x\n", &status); - printf("status.usage %x\n", status.usage); - printf("fifo->width %x\n", fifo->width); - - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); - printf("###### MWMR SOCLIB READ 2 #############\n"); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); - printf("###### MWMR SOCLIB READ 2bis #############\n"); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif -printf("###### MWMR SOCLIB READ 3 #############\n"); - mwmr_lock( fifo ); -printf("###### MWMR SOCLIB READ 4 #############\n"); - - rehash_status( fifo, &status ); -printf("###### MWMR SOCLIB READ 4a #############\n"); - } //DG 15.12. -printf("###### MWMR SOCLIB READ 4b #############\n"); - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); -printf("###### MWMR SOCLIB READ 5 #############\n"); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } -printf("###### MWMR SOCLIB READ 6 #############\n"); - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - printf("###### MWMR SOCLIB READ 7 #############\n"); - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -printf("###### MWMR SOCLIB WRITE #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - //printf("###### MWMR SOCLIB WRITE2 #############\n"); -printf(" %x \n",fifo); -//printf(" %x \n",fifo->depth); DG 08.12. c'est ici que ca plante, fifo non initialise?? -printf("###### MWMR SOCLIB WRITE2 #############\n"); -//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock! - mwmr_lock( fifo ); - -printf("###### MWMR SOCLIB WRITE3 #############\n"); -printf("###### MWMR SOCLIB WRITE3b #############\n"); - rehash_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE3c #############\n"); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } -printf("###### MWMR SOCLIB WRITE4 #############\n"); - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - printf("###### MWMR SOCLIB WRITE4 #######lensw %x \n",lensw); -printf("###### MWMR SOCLIB WRITE4 #######fifo->gdepth %x \n",fifo->gdepth); - - if ( status.rptr <= status.wptr ){ -printf("###### MWMR SOCLIB WRITE4a #######fifo->gdepth %x \n",fifo->gdepth); - len = (fifo->gdepth - status.wptr); -printf("###### MWMR SOCLIB WRITE4a #######fifo->len %x \n",len); -} - else{ -printf("###### MWMR SOCLIB WRITE4b #######fifo->gdepth %x \n",fifo->gdepth); - len = fifo->gdepth - status.usage; - } - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - printf("######lensw %x", lensw); -printf("######len %x", len); - status.modified = 1; - } - } - writeback_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE5 #############\n"); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif -printf("###### MWMR SOCLIB WRITE6 #############\n"); - mwmr_unlock( fifo ); -printf("###### MWMR SOCLIB WRITE7 #############\n"); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig deleted file mode 100644 index 43a31fc5407edbee8a28bb6a57ba63553b2c48e6..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig +++ /dev/null @@ -1,377 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> - -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) - pthread_yield(); -# else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield(); - } -# else - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; -// srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while ( status.usage < fifo->width ) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - - mwmr_unlock( fifo ); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c b/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c deleted file mode 100644 index 1531c4b40a61e2795fac418153d3b74e65dd50b4..0000000000000000000000000000000000000000 --- a/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c +++ /dev/null @@ -1,409 +0,0 @@ -/* - * This file is part of MutekH. - * - * MutekH is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; version 2.1 of the License. - * - * MutekH is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with MutekH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Copyright (c) UPMC, Lip6, SoC - * Nicolas Pouillon <nipo@ssji.net>, 2008 - */ - -#include <mutek/scheduler.h> -#include <hexo/types.h> -#include <hexo/atomic.h> -#include <hexo/iospace.h> -#include <hexo/endian.h> -#include <hexo/interrupt.h> -#include <string.h> -#include <mwmr/mwmr.h> -#include <stdio.h> //DG 08.12. -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -# include <srl/srl_sched_wait.h> -# include <srl/srl_log.h> -# ifndef SRL_VERBOSITY -# define SRL_VERBOSITY VERB_DEBUG -# endif -#elif defined(CONFIG_PTHREAD) -# include <pthread.h> -#endif - -static inline size_t min(size_t a, size_t b) -{ - if ( a < b ) - return a; - else - return b; -} - -void -mwmr_hw_init( void *coproc, enum SoclibMwmrWay way, - size_t no, const struct mwmr_s* mwmr ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer)); - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width)); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock)); -#endif - cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1)); -} - -void mwmr_config( void *coproc, size_t no, const uint32_t val ) -{ - uintptr_t c = (uintptr_t)coproc; - cpu_mem_write_32( c + sizeof(uint32_t) * no, val); -} - -uint32_t mwmr_status( void *coproc, size_t no ) -{ - uintptr_t c = (uintptr_t)coproc; - return cpu_mem_read_32( c + sizeof(uint32_t) * no ); -} - -static inline void mwmr_lock( struct mwmr_s *fifo ) -{ - printf("##### MWMR LOCK ####"); -#ifdef CONFIG_MWMR_USE_RAMLOCKS - printf("##### MWMR USE RAMLOCKS ####"); - while (*((uint32_t *)fifo->lock) != 0) { -# if defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD ####"); - pthread_yield(); -# else -printf("##### MWMR NON CONFIG_PTHREAD ####"); - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -# endif - } -#else -# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_SRL ####"); - while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { -/* cpu_interrupt_disable(); */ -/* sched_context_switch(); */ -/* cpu_interrupt_enable(); */ - srl_sched_wait_eq_le(&fifo->status->lock, 0); - } -# elif defined(CONFIG_PTHREAD) -printf("##### MWMR CONFIG_PTHREAD2 ####"); - -while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) { - pthread_yield();printf("##### MWMR pthread_yield ####"); - } -# else -printf("##### MWMR ELSE ####"); - cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0); -# endif -#endif -} - -static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - return !!cpu_mem_read_32((uintptr_t)fifo->lock); -#else - return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0); -#endif -} - -static inline void mwmr_unlock( struct mwmr_s *fifo ) -{ -#ifdef CONFIG_MWMR_USE_RAMLOCKS - cpu_mem_write_32((uintptr_t)fifo->lock, 0); -#else - cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0); -#endif -} - -typedef struct { - uint32_t usage, wptr, rptr, modified; -} local_mwmr_status_t; - -static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus)); - status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage )); - status->wptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr )); - status->rptr = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr )); - status->modified = 0; - printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth); -} - -static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status ) -{ - struct mwmr_status_s *fstatus = fifo->status; - if ( !status->modified ) - return; - cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) ); - cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) ); - cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) ); -} - -void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - local_mwmr_status_t status; - - printf("###### MWMR SOCLIB READ 0 #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - - mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) {printf("lensw %x \n",lensw); - size_t len; - while ( status.usage < fifo->width ) { //DG 15.12. - printf("status address %x\n", &status); - printf("status.usage %x\n", status.usage); - printf("fifo->width %x\n", fifo->width); - - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); - printf("###### MWMR SOCLIB READ 2 #############\n"); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_ge_le(&fifo->status->usage, fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); - printf("###### MWMR SOCLIB READ 2bis #############\n"); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif -printf("###### MWMR SOCLIB READ 3 #############\n"); - mwmr_lock( fifo ); -printf("###### MWMR SOCLIB READ 4 #############\n"); - rehash_status( fifo, &status ); - } //DG 15.12. -printf("###### MWMR SOCLIB READ 4a #############\n"); - while ( lensw && status.usage >= fifo->width ) { - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); -printf("###### MWMR SOCLIB READ 5 #############\n"); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - status.modified = 1; - } - } -printf("###### MWMR SOCLIB READ 6 #############\n"); - writeback_status( fifo, &status ); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += tot; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - printf("###### MWMR SOCLIB READ 7 #############\n"); - mwmr_unlock( fifo ); -} - -void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - local_mwmr_status_t status; - -printf("###### MWMR SOCLIB WRITE #############\n"); - -#ifdef CONFIG_MWMR_INSTRUMENTATION - size_t tot = lensw/fifo->width; - uint32_t access_begin = cpu_cycle_count(); -#endif - //printf("###### MWMR SOCLIB WRITE2 #############\n"); -printf(" %x \n",fifo); -//printf(" %x \n",fifo->depth); DG 08.12. c'est ici que ca plante, fifo non initialise?? -printf("###### MWMR SOCLIB WRITE2 #############\n"); -//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock! - mwmr_lock( fifo ); - -printf("###### MWMR SOCLIB WRITE3 #############\n"); -printf("###### MWMR SOCLIB WRITE3b #############\n"); - rehash_status( fifo, &status ); - while ( lensw ) { - size_t len; - while (status.usage >= fifo->gdepth) { - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD) - srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width); -#elif defined(CONFIG_PTHREAD) - pthread_yield(); -#else - cpu_interrupt_disable(); - sched_context_switch(); - cpu_interrupt_enable(); -#endif - mwmr_lock( fifo ); - rehash_status( fifo, &status ); - } -printf("###### MWMR SOCLIB WRITE4 #############\n"); - while ( lensw && status.usage < fifo->gdepth ) { - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - status.modified = 1; - } - } - writeback_status( fifo, &status ); -printf("###### MWMR SOCLIB WRITE5 #############\n"); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += tot; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif -printf("###### MWMR SOCLIB WRITE6 #############\n"); - mwmr_unlock( fifo ); -printf("###### MWMR SOCLIB WRITE7 #############\n"); -} - -size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw ) -{ - uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage >= fifo->width ) { - size_t len; - void *sptr; - - if ( status.rptr < status.wptr ) - len = status.usage; - else - len = (fifo->gdepth - status.rptr); - len = min(len, lensw); - sptr = &((uint8_t*)fifo->buffer)[status.rptr]; - cpu_dcache_invld_buf(sptr, len); - memcpy( ptr, sptr, len ); - status.rptr += len; - if ( status.rptr == fifo->gdepth ) - status.rptr = 0; - ptr += len; - status.usage -= len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); - mwmr_unlock( fifo ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_read += done/fifo->width; - fifo->time_read += cpu_cycle_count()-access_begin; -#endif - return done; -} - -size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw ) -{ - const uint8_t *ptr = _ptr; - size_t done = 0; - local_mwmr_status_t status; -#ifdef CONFIG_MWMR_INSTRUMENTATION - uint32_t access_begin = cpu_cycle_count(); -#endif - - if ( mwmr_try_lock( fifo ) ) - return done; - rehash_status( fifo, &status ); - while ( lensw && status.usage < fifo->gdepth ) { - size_t len; - void *dptr; - - if ( status.rptr <= status.wptr ) - len = (fifo->gdepth - status.wptr); - else - len = fifo->gdepth - status.usage; - len = min(len, lensw); - dptr = &((uint8_t*)fifo->buffer)[status.wptr]; - memcpy( dptr, ptr, len ); - status.wptr += len; - if ( status.wptr == fifo->gdepth ) - status.wptr = 0; - ptr += len; - status.usage += len; - lensw -= len; - done += len; - status.modified = 1; - } - writeback_status( fifo, &status ); -#ifdef CONFIG_MWMR_INSTRUMENTATION - cpu_dcache_invld_buf(fifo, sizeof(*fifo)); - fifo->n_write += done/fifo->width; - fifo->time_write += cpu_cycle_count()-access_begin; -#endif - mwmr_unlock( fifo ); - return done; -} - -#ifdef CONFIG_MWMR_INSTRUMENTATION -void mwmr_dump_stats( const struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - if ( mwmr->n_read ) - srl_log_printf(NONE, "read,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_read, mwmr->n_read ); - if ( mwmr->n_write ) - srl_log_printf(NONE, "write,%s,%d,%d,%d\n", - mwmr->name, cpu_cycle_count(), - mwmr->time_write, mwmr->n_write ); -} - -void mwmr_clear_stats( struct mwmr_s *mwmr ) -{ - cpu_dcache_invld_buf(mwmr, sizeof(*mwmr)); - mwmr->time_read = - mwmr->n_read = - mwmr->time_write = - mwmr->n_write = 0; -} -#endif diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc deleted file mode 100644 index 7bb2879a15630192024b88e561d182a79fc41cd8..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc +++ /dev/null @@ -1,44 +0,0 @@ - -use = [ -Uses('caba:vci_locks'), -Uses('caba:vci_ram'), -Uses('caba:vci_fdt_rom'), -Uses('caba:vci_heterogeneous_rom'), -Uses('caba:vci_multi_tty'), -Uses('caba:vci_xicu'), -Uses('caba:vci_block_device'), -Uses('caba:vci_ethernet'), -Uses('caba:vci_rttimer'), -Uses('caba:vci_fd_access'), -Uses('caba:vci_simhelper'), -Uses('caba:vci_vgsb'), -Uses('caba:vci_mwmr_stats'), -Uses('caba:vci_logger'), -Uses('caba:vci_local_crossbar'), -Uses('caba:fifo_virtual_copro_wrapper'), -Uses('common:elf_file_loader'), -Uses('common:plain_file_loader'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:ppc405'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:arm'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:mips32eb'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:mips32el'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:niosII'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:lm32'), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:sparcv8', NWIN=8), -Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:sparcv8', NWIN=2), - ] - -todo = Platform('caba', 'top.cc', - uses=use, - cell_size = 4, - plen_size = 9, - addr_size = 32, - rerror_size = 1, - clen_size = 1, - rflag_size = 1, - srcid_size = 8, - pktid_size = 1, - trdid_size = 1, - wrplen_size = 1 -) - diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o deleted file mode 100644 index 8475297f6da19e95e8915865a38a78584730e03d..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o and /dev/null differ diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc deleted file mode 100644 index af437a6aa489a27426f0839a7fb728e3a45c6825..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc +++ /dev/null @@ -1,537 +0,0 @@ -//-------------------------------Header------------------------------------ - -#include <iostream> -#include <cstdlib> -#include <vector> -#include <string> -#include <stdexcept> -#include <cstdarg> - -#define CONFIG_GDB_SERVER -#define CONFIG_SOCLIB_MEMCHECK - -#include "iss_memchecker.h" -#include "gdbserver.h" - -#include "ppc405.h" -#include "niosII.h" -#include "mips32.h" -#include "arm.h" -#include "sparcv8.h" -#include "lm32.h" - -#include "mapping_table.h" -#include "vci_fdt_rom.h" -#include "vci_xcache_wrapper.h" -#include "vci_ram.h" -#include "vci_heterogeneous_rom.h" -#include "vci_multi_tty.h" -#include "vci_locks.h" -#include "vci_xicu.h" -#include "vci_mwmr_stats.h" -#include "vci_vgsb.h" -#include "mwmr_controller.h" -#include "vci_mwmr_controller.h" -#include "fifo_virtual_copro_wrapper.h" -#include "vci_block_device.h" -#include "vci_simhelper.h" -#include "vci_fd_access.h" -#include "vci_ethernet.h" -#include "vci_rttimer.h" -#include "vci_logger.h" -#include "vci_local_crossbar.h" - -namespace { -std::vector<std::string> stringArray( - const char *first, ... ) -{ - std::vector<std::string> ret; - va_list arg; - va_start(arg, first); - const char *s = first; - while(s) { - ret.push_back(std::string(s)); - s = va_arg(arg, const char *); - }; - va_end(arg); - return ret; -} - -std::vector<int> intArray( - const int length, ... ) -{ - int i; - std::vector<int> ret; - va_list arg; - va_start(arg, length); - - for (i=0; i<length; ++i) { - ret.push_back(va_arg(arg, int)); - }; - va_end(arg); - return ret; -} -} - -using namespace soclib; -using common::IntTab; -using common::Segment; - -static common::MappingTable maptab(32, IntTab(8), IntTab(8), 0xfff00000); - -typedef caba::VciParams<4,9,32,1,1,1,8,1,1,1> vci_param;// Define our VCI parameters - -struct CpuEntry; - - - -#if defined(CONFIG_GDB_SERVER) -# if defined(CONFIG_SOCLIB_MEMCHECK) -# warning Using GDB and memchecker -# define ISS_NEST(T) common::GdbServer<common::IssMemchecker<T> > -# else -# warning Using GDB -# define ISS_NEST(T) common::GdbServer<T> -# endif -#elif defined(CONFIG_SOCLIB_MEMCHECK) -# warning Using Memchecker -# define ISS_NEST(T) common::GdbServer<common::IssMemchecker<T> -#else -# warning Using raw processor -# define ISS_NEST(T) T -#endif - -//********************************************************************** -// Processor entry and connection code -//********************************************************************** - -#define CPU_CONNECT(n) void (n)(CpuEntry *e, sc_core::sc_clock &clk, \ -sc_core::sc_signal<bool> &rstn, caba::VciSignals<vci_param> &m) - -#define INIT_TOOLS(n) void (n)(const common::Loader &ldr) - -#define NEW_CPU(n) caba::BaseModule * (n)(CpuEntry *e) - -struct CpuEntry { - caba::BaseModule *cpu; - common::Loader *text_ldr; - sc_core::sc_signal<bool> *irq_sig; - size_t irq_sig_count; - std::string type; - std::string name; - int id; - CPU_CONNECT(*connect); - INIT_TOOLS(*init_tools); - NEW_CPU(*new_cpu); -}; - - template <class Iss_> - CPU_CONNECT(cpu_connect){ - typedef ISS_NEST(Iss_) Iss; - caba::VciXcacheWrapper<vci_param, Iss> *cpu = static_cast<caba::VciXcacheWrapper<vci_param, Iss> *>(e->cpu); - cpu->p_clk(clk); - cpu->p_resetn(rstn); - e->irq_sig_count = Iss::n_irq; - e->irq_sig = new sc_core::sc_signal<bool>[Iss::n_irq]; - for ( size_t irq = 0; irq < (size_t)Iss::n_irq; ++irq ) - cpu->p_irq[irq](e->irq_sig[irq]); - cpu->p_vci(m); - } - -template <class Iss> -INIT_TOOLS(initialize_tools){ -#if defined(CONFIG_GDB_SERVER) -ISS_NEST(Iss)::set_loader(ldr); -#endif -#if defined(CONFIG_SOCLIB_MEMCHECK) - common::IssMemchecker<Iss>::init(maptab, ldr, "vci_multi_tty0,vci_xicu,vci_block_device,vci_fd_acccess,vci_ethernet,vci_fdt_rom,vci_rttimer"); -#endif -} - -template <class Iss> -NEW_CPU(new_cpu){ -return new caba::VciXcacheWrapper<vci_param, ISS_NEST(Iss)>(e->name.c_str(), e->id, maptab, IntTab(e->id),4,4,4,4,4,4); -} - -/*************************************************************************** ---------------------Processor creation code------------------------- -***************************************************************************/ - -template <class Iss> - CpuEntry * newCpuEntry_(CpuEntry *e){ - e->new_cpu = new_cpu<Iss>; - e->connect = cpu_connect<Iss>; - e->init_tools = initialize_tools<Iss>; - return e; -} - - struct CpuEntry * newCpuEntry(const std::string &type, int id, common::Loader *ldr) { - CpuEntry *e = new CpuEntry; - std::ostringstream o; - o << type << "_" << id; - - e->cpu = 0; - e->text_ldr = ldr; - e->type = type; - e->name = o.str(); - e->id = id; - - switch (type[0]) { - case 'm': - if (type == "mips32el") - return newCpuEntry_<common::Mips32ElIss>(e); - else if (type == "mips32eb") - return newCpuEntry_<common::Mips32EbIss>(e); - - case 'a': - if (type == "arm") - return newCpuEntry_<common::ArmIss>(e); - case 'n': - if (type == "nios2") - return newCpuEntry_<common::Nios2fIss>(e); - - case 'p': - if (type == "ppc")return newCpuEntry_<common::Ppc405Iss>(e); - - case 's': - if (type == "sparc") - return newCpuEntry_<common::Sparcv8Iss<8> >(e); - else if (type == "sparc_2wins") - return newCpuEntry_<common::Sparcv8Iss<2> >(e); - - case 'l': - if (type == "lm32") - return newCpuEntry_<common::LM32Iss<true> >(e); - } - - throw std::runtime_error(type + ": wrong processor type"); -} - -//********************************************************************** -// Args parsing and netlist - -//********************************************************************** - -int _main(int argc, char **argv) -{ - - // Avoid repeating these everywhere - std::vector<CpuEntry*> cpus; - common::Loader data_ldr; - data_ldr.memory_default(0x5a); - - -//-----------------------mapping table------------------------ - -// ppc segments - -maptab.add(Segment("resetppc", 0xffffff80, 0x0080, IntTab(1), true)); -maptab.add(Segment("resetnios", 0x00802000, 0x1000, IntTab(1), true)); -maptab.add(Segment("resetzero", 0x00000000, 0x1000, IntTab(1), true)); -maptab.add(Segment("resetmips", 0xbfc00000, 0x1000, IntTab(1), true)); - - -// RAM segments - -maptab.add(Segment("text", 0x60000000, 0x00100000, IntTab(0), true)); -maptab.add(Segment("rodata", 0x80000000, 0x01000000, IntTab(1), true)); -maptab.add(Segment("data", 0x7f000000, 0x01000000, IntTab(2), false)); - -maptab.add(Segment("simhelper", 0xd3200000, 0x00000100, IntTab(3), false)); - maptab.add(Segment("vci_xicu", 0xd2200000, 0x00001000, IntTab(4), false)); -maptab.add(Segment("vci_rttimer", 0xd6000000, 0x00000100, IntTab(5), false)); - -maptab.add(Segment("vci_fdt_rom", 0xe0000000, 0x00001000, IntTab(6), false)); - -maptab.add(Segment("cram0", 0x10000000, 0x80000, IntTab(2), true)); -maptab.add(Segment("uram0", 0x10280000, 0x80000, IntTab(2), false)); -maptab.add(Segment("vci_multi_tty0" , 0xd0200000, 0x00000010, IntTab(7), false)); -maptab.add(Segment("vci_fd_access", 0xd4200000, 0x00000100, IntTab(8), false)); -maptab.add(Segment("vci_ethernet", 0xd5000000, 0x00000020, IntTab(9), false)); -maptab.add(Segment("vci_block_device", 0xd1200000, 0x00000020, IntTab(10), false)); - -maptab.add(Segment("vci_locks", 0xC0200000, 0x00000100, IntTab(11), false)); - - - -//-------------------------Call Loader--------------------------------- - -std::cerr << "caba-vgmn-mutekh_kernel_tutorial SoCLib simulator for MutekH" << std::endl; - -if ( (argc < 2) || ((argc % 2) == 0) ) { -exit(0); } - argc--; - argv++; - -bool heterogeneous = (argc > 2); - - for (int i = 0; i < (argc - 1); i += 2){ - char *cpu_p = argv[i]; - const char *kernel_p = argv[i+1]; - const char *arch_str = strsep(&cpu_p, ":"); - int count = cpu_p ? atoi(cpu_p) : 1; - common::Loader *text_ldr; - if (heterogeneous) { - text_ldr = new common::Loader(std::string(kernel_p) + ";.text"); - text_ldr->memory_default(0x5a);; - data_ldr.load_file(std::string(kernel_p) + ";.rodata;.boot;.excep"); - if (i == 0) - data_ldr.load_file(std::string(kernel_p) + ";.data;.channel0;.channel1;.channel2;.channel3;.channel4;.channel5;.channel6;.channel7;.channel8;.channel9;.channel10;.channel11;.channel12;.channel13;.channel14;.channel15;.channel16;.channel17;.channel18;.channel19;.channel20;.channel21;.channel22;.channel23;.channel24;.channel25;.channel26;.channel27;.channel28;.cpudata;.contextdata"); - } else { - text_ldr = new common::Loader(std::string(kernel_p)); - text_ldr->memory_default(0x5a); - data_ldr.load_file(std::string(kernel_p)); - } - - common::Loader tools_ldr(kernel_p); - tools_ldr.memory_default(0x5a); - - for (int j = 0; j < count; j++) { - int id = cpus.size(); - std::cerr << "***" << cpus.size() << std::endl; - CpuEntry *e = newCpuEntry(arch_str, id, text_ldr); - if (j == 0) - e->init_tools(tools_ldr); - e->cpu = e->new_cpu(e); - cpus.push_back(e); - } - } - - const size_t xicu_n_irq = 5; - -//----------------------------Instantiation------------------------------- - - -caba::VciHeterogeneousRom<vci_param> vcihetrom("vcihetrom", IntTab(0), maptab); -caba::VciRam<vci_param> vcirom("vcirom", IntTab(1), maptab, data_ldr); - caba::VciSimhelper<vci_param> vcisimhelper ("vcisimhelper", IntTab(3), maptab); -caba::VciXicu<vci_param> vcixicu("vci_xicu", maptab, IntTab(4), 1, xicu_n_irq, cpus.size(), cpus.size()); -caba::VciRtTimer<vci_param> vcirttimer ("vcirttimer", IntTab(5), maptab, 1, true); - -caba::VciFdtRom<vci_param> vcifdtrom("vci_fdt_rom", IntTab(6), maptab); -caba::VciMultiTty<vci_param> TTY0("TTY0", IntTab(7), maptab, "vci_multi_tty0", NULL); -caba::VciLocks<vci_param> vcilocks("vcilocks", IntTab(11), maptab); -soclib::caba::VciRam<vci_param>Memory0("Memory0", IntTab(2), maptab); -caba::VciFdAccess<vci_param> vcifd("vcifd", maptab, IntTab(cpus.size()+1), IntTab(8)); -caba::VciEthernet<vci_param> vcieth("vcieth", maptab, IntTab(cpus.size()+2), IntTab(9), "soclib0"); -caba::VciBlockDevice<vci_param> vcibd("vcibd", maptab, IntTab(cpus.size()), IntTab(10),"block0.iso", 2048); -soclib::caba::VciVgsb<vci_param> vgsb("Bus0" , maptab,5,12); - -soclib::caba::VciMwmrStats<vci_param> mwmr_stats0("mwmr_stats0",maptab, data_ldr, "mwmr0.log",stringArray("TCPIP_receiveTCP__Application_receiveTCP","TCPPacketManager_storePacket__TCPPacketManager_retrieve","TCPIP_timeoutPacket__TCPPacketManager_timeoutPacket","TCPIP_emptyListOfPackets__TCPPacketManager_empty","TCPIP_addPacket__TCPPacketManager_addPacket","TCPIP_ackPacket__TCPPacketManager_ackPacket","Application_open__TCPIP_open","Application_close__TCPIP_close","Application_abort__TCPIP_abort","Application_sendTCP__TCPIP_send_TCP","SmartCardController_fromTtoP__TCPIP_fromTtoP","SmartCardController_fromPtoT__TCPIP_fromPtoT","SmartCardController_start_TCPIP__TCPIP_start","SmartCardController_reset__InterfaceDevice_reset","SmartCardController_pTS__InterfaceDevice_pTS","SmartCardController_dataReady__InterfaceDevice_data_Ready","SmartCardController_activation__InterfaceDevice_activation","SmartCardController_fromDtoSC__InterfaceDevice_fromDtoSC","SmartCardController_answerToReset__InterfaceDevice_answerToReset","SmartCardController_pTSCConfirm__InterfaceDevice_pTSConfirm","SmartCardController_fromSCtoD__InterfaceDevice_fromSCtoD","SmartCardController_data_Ready_SC__InterfaceDevice_dataReady","SmartCardController_start_Application__Application_startApplication","TCPIP_set__mainTimer__Timer__mainTimer__TCPIP_set","TCPIP_reset__mainTimer__Timer__mainTimer__TCPIP_reset","TCPIP_expire__mainTimer__Timer__mainTimer__TCPIP_expire","TCPPacketManager_set__timerP__Timer__timerP__TCPPacketManager_set","TCPPacketManager_reset__timerP__Timer__timerP__TCPPacketManager_reset","TCPPacketManager_expire__timerP__Timer__timerP__TCPPacketManager_expire",NULL)); - - - -//-------------------------------signaux------------------------------------ - -caba::VciSignals<vci_param> signal_vci_m[cpus.size() + 1]; -caba::VciSignals<vci_param> signal_vci_xicu("signal_vci_xicu"); -caba::VciSignals<vci_param> signal_vci_vcifdtrom("signal_vci_vcifdtrom"); - caba::VciSignals<vci_param> signal_vci_vcihetrom("signal_vci_vcihetrom"); - caba::VciSignals<vci_param> signal_vci_vcirom("signal_vci_vcirom"); - caba::VciSignals<vci_param> signal_vci_vcisimhelper("signal_vci_vcisimhelper"); -caba::VciSignals<vci_param> signal_vci_vcirttimer("signal_vci_vcirttimer"); -caba::VciSignals<vci_param> signal_vci_vcilocks("signal_vci_vcilocks"); -caba::VciSignals<vci_param> signal_vci_vcifdaccessi; -caba::VciSignals<vci_param> signal_vci_vcifdaccesst; -caba::VciSignals<vci_param> signal_vci_bdi; -caba::VciSignals<vci_param> signal_vci_bdt; -caba::VciSignals<vci_param> signal_vci_etherneti; -caba::VciSignals<vci_param> signal_vci_ethernett; - -sc_clock signal_clk("signal_clk"); -sc_signal<bool> signal_resetn("signal_resetn"); - - sc_core::sc_signal<bool> signal_xicu_irq[xicu_n_irq]; - -soclib::caba::VciSignals<vci_param> signal_vci_vciram0("signal_vci_vciram0"); - -soclib::caba::VciSignals<vci_param> signal_vci_tty0("signal_vci_tty0"); - - - -//------------------------------Netlist--------------------------------- - -// icu - - vcifdtrom.add_property("interrupt-parent", vcifdtrom.get_device_phandle("vci_xicu")); - - vcixicu.p_clk(signal_clk); - vcixicu.p_resetn(signal_resetn); - - vcixicu.p_vci(signal_vci_xicu); - - vcifdtrom.begin_device_node("vci_rttimer", "soclib:vci_rttimer"); - vcifdtrom.add_property("interrupts", 4); - vcifdtrom.add_property("frequency", 1000000); - vcifdtrom.end_node(); - - vcifdtrom.begin_device_node("vci_xicu", "soclib:vci_xicu"); - - int irq_map[cpus.size() * 3]; - for ( size_t i = 0; i < cpus.size(); ++i ) - { - irq_map[i*3 + 0] = i; - irq_map[i*3 + 1] = vcifdtrom.get_cpu_phandle(i); - irq_map[i*3 + 2] = 0; - } - - vcifdtrom.add_property("interrupt-map", irq_map, cpus.size() * 3); - vcifdtrom.add_property("frequency", 1000000); - - vcifdtrom.add_property("param-int-pti-count", 1); - vcifdtrom.add_property("param-int-hwi-count", xicu_n_irq); - vcifdtrom.add_property("param-int-wti-count", cpus.size()); - vcifdtrom.add_property("param-int-irq-count", cpus.size()); - vcifdtrom.end_node(); - - for ( size_t i = 0; i < xicu_n_irq; ++i ) - vcixicu.p_hwi[i](signal_xicu_irq[i]); - -///////////////// cpus - -vcifdtrom.begin_cpus(); - -for ( size_t i = 0; i < cpus.size(); ++i ){ - // configure het_rom - vcihetrom.add_srcid(*cpus[i]->text_ldr, IntTab(i)); - // add cpu node to device tree - vcifdtrom.begin_cpu_node(std::string("cpu:") + cpus[i]->type, i); - vcifdtrom.add_property("freq", 1000000); - vcifdtrom.end_node(); - -// connect cpu - cpus[i]->connect(cpus[i], signal_clk, signal_resetn, signal_vci_m[i]); -vgsb.p_to_initiator[i](signal_vci_m[i]); -vcixicu.p_irq[i](cpus[i]->irq_sig[0]); - } - vcifdtrom.end_node(); - - vcihetrom.p_clk(signal_clk); - vcifdtrom.p_clk(signal_clk); - vcirom.p_clk(signal_clk); - vcisimhelper.p_clk(signal_clk); - vcirttimer.p_clk(signal_clk); - vcihetrom.p_resetn(signal_resetn); - vcifdtrom.p_resetn(signal_resetn); - vcirom.p_resetn(signal_resetn); - vcisimhelper.p_resetn(signal_resetn); - vcirttimer.p_resetn(signal_resetn); - vcihetrom.p_vci(signal_vci_vcihetrom); - vcifdtrom.p_vci(signal_vci_vcifdtrom); - vcirom.p_vci(signal_vci_vcirom); - vcisimhelper.p_vci(signal_vci_vcisimhelper); - vcirttimer.p_vci(signal_vci_vcirttimer); - vcirttimer.p_irq[0](signal_xicu_irq[4]); - - vgsb.p_clk(signal_clk); - vgsb.p_resetn(signal_resetn); - vgsb.p_to_target[0](signal_vci_vcihetrom); - vgsb.p_to_target[1](signal_vci_vcirom); - vgsb.p_to_target[3](signal_vci_vcisimhelper); - - vgsb.p_to_target[4](signal_vci_xicu); - vgsb.p_to_target[5](signal_vci_vcirttimer); - - vgsb.p_to_target[6](signal_vci_vcifdtrom); - - vgsb.p_to_initiator[cpus.size()](signal_vci_bdi); - vgsb.p_to_initiator[cpus.size()+1](signal_vci_vcifdaccessi); - vgsb.p_to_initiator[cpus.size()+2](signal_vci_etherneti); - -// RAM netlist - -Memory0.p_clk(signal_clk); -Memory0.p_resetn(signal_resetn); -Memory0.p_vci(signal_vci_vciram0); - -vgsb.p_to_target[2](signal_vci_vciram0); - -vgsb.p_to_target[8](signal_vci_vcifdaccesst); -vgsb.p_to_target[9](signal_vci_ethernett); -vgsb.p_to_target[10](signal_vci_bdt); -vcifdtrom.add_property("interrupts", 0); - -vcifdtrom.end_node();; - -// TTY netlist - -TTY0.p_clk(signal_clk); -TTY0.p_resetn(signal_resetn); -TTY0.p_vci(signal_vci_tty0); - -vcifdtrom.begin_device_node("vci_multi_tty0","soclib:vci_multi_tty0"); - -vgsb.p_to_target[7](signal_vci_tty0); - -TTY0.p_irq[0](signal_xicu_irq[0]); - -{ - - vcifdtrom.begin_node("aliases"); - vcifdtrom.add_property("timer", vcifdtrom.get_device_name("vci_rttimer") + "[0]"); - vcifdtrom.add_property("console", vcifdtrom.get_device_name("vci_multi_tty0") + "[0]"); - vcifdtrom.end_node(); -} - -vcieth.p_clk(signal_clk); -vcieth.p_resetn(signal_resetn); -vcieth.p_irq(signal_xicu_irq[3]); -vcieth.p_vci_target(signal_vci_ethernett); -vcieth.p_vci_initiator(signal_vci_etherneti); -vcifdtrom.begin_device_node("vci_ethernet", "soclib:vci_ethernet"); -vcifdtrom.add_property("interrupts", 3); -vcifdtrom.end_node(); -vcibd.p_clk(signal_clk); -vcibd.p_resetn(signal_resetn); -vcibd.p_irq(signal_xicu_irq[1]); -vcibd.p_vci_target(signal_vci_bdt); -vcibd.p_vci_initiator(signal_vci_bdi); -vcifdtrom.begin_device_node("vci_block_device", "soclib:vci_block_device"); -vcifdtrom.add_property("interrupts", 1); -vcifdtrom.end_node(); -vcihetrom.add_srcid(*cpus[0]->text_ldr, IntTab(cpus.size()+1)); -vcifd.p_clk(signal_clk); -vcifd.p_resetn(signal_resetn); -vcifd.p_irq(signal_xicu_irq[2]); -vcifd.p_vci_target(signal_vci_vcifdaccesst); -vcifd.p_vci_initiator(signal_vci_vcifdaccessi); -vcifdtrom.begin_device_node("vci_fd_access", "soclib:vci_fd_access"); -vcifdtrom.add_property("interrupts", 2); -vcifdtrom.end_node(); - -mwmr_stats0.p_clk(signal_clk); -mwmr_stats0.p_resetn(signal_resetn); -mwmr_stats0.p_vci(signal_vci_vciram0); - - sc_core::sc_start(sc_core::sc_time(0, sc_core::SC_NS)); - signal_resetn = false; - sc_core::sc_start(sc_core::sc_time(1, sc_core::SC_NS)); - signal_resetn = true; - sc_core::sc_start(); - - return EXIT_SUCCESS; -} - - - - -/*************************************************************************** -----------------------------simulation------------------------- -***************************************************************************/ - -int sc_main (int argc, char *argv[]) -{ - try { - return _main(argc, argv); - } - - catch (std::exception &e) { - std::cout << e.what() << std::endl; - throw; - } catch (...) { -std::cout << "Unknown exception occured" << std::endl; -throw; -} - - return 1; -} \ No newline at end of file diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc deleted file mode 100644 index fd054dafef516aaa766ab13366326f5cbd80c942..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc deleted file mode 100644 index 551508ea59049b57675fe1085801960c24366468..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/module.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/module.pyc deleted file mode 100644 index d0d0936d5286aae926e0bb78919ac6f8d426af32..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/module.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc deleted file mode 100644 index d745bc66d5bd1ad90032da8e63d219ae65bdef1b..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc deleted file mode 100644 index dc5d01a2409b10d639937535a6c05576576b9c10..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc deleted file mode 100644 index 7dfff1a2469e0b3db16675b73ab9be8086dd6d08..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc deleted file mode 100644 index 3c5bd76e437c198c1bceb37d61777cb0a420cc69..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/action.py b/MPSoC/soclib/utils/lib/python/soclib_builder/action.py deleted file mode 100644 index e669eaf91564f0501f3fd2711d17099fb2983112..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/action.py +++ /dev/null @@ -1,291 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END - -import os -import os.path -import time -import sys -import select -import tempfile -import operator -try: - from functools import reduce -except: - pass - -from soclib_cc.config import config -import command - -__author__ = 'Nicolas Pouillon, <nipo@ssji.net>' -__copyright__ = 'UPMC, Lip6, SoC, 2007-2010' -__license__ = 'GPL-v2' -__id__ = "$Id: action.py 1750 2010-05-26 09:49:35Z nipo $" -__version__ = "$Revision: 1750 $" - -__all__ = ['Action', 'ActionFailed', 'NotFound', 'Noop'] - -class NotFound(Exception): - pass - -class ActionFailed(Exception): - def __init__(self, rval, action): - Exception.__init__(self, "%s failed: %s"%(action, rval)) - self.rval = rval - self.action = action - -def get_times(files, default, cmp_func, ignore_absent): - most_time = default - for f in files: - if f.exists(): - most_time = cmp_func((f.last_mod, most_time)) - else: - if ignore_absent: - continue - else: - raise NotFound, f - return most_time - -def merge_hash(objs): - return hash(reduce( - lambda x,y:(x + (y<<1)), - map(hash, objs), - 0)) - -get_newest = lambda files, ignore_absent: get_times(files, 0, max, ignore_absent) -get_oldest = lambda files, ignore_absent: get_times(files, time.time(), min, ignore_absent) - -def check_exist(files): - return reduce(operator.and_, map(lambda x:x.exists(), files), True) - -class Action: - priority = 0 - info_code = ' ' - - WORKING = 'Work' - TODO = 'Todo' - DONE = 'Done' - FAILED = 'Failed' - BLOCKED = 'Blocked' - - def __init__(self, dests, sources, **options): - from bblock import bblockize, BBlock, AnonymousBBlock - if not dests: - self.dests = [AnonymousBBlock(self)] - else: - self.dests = bblockize(dests, self) - self.sources = bblockize(sources) - self.options = options - - self.__hash = merge_hash(self.dests+self.sources) - - self.__state = self.TODO - self.__depends = [] - self.__commands = [] - - map(lambda x:x.addUser(self), self.sources) - - def prepare(self): - import fileops - for outdir in self.dests: - d = os.path.dirname(str(self.dests[0])) - if d: - self.add_depends(*fileops.CreateDir(d).dests) - - self.__state = [self.TODO, self.DONE][self.is_valid()] - - self.prepare = lambda :None - - def is_valid(self): - try: - newest_dep = 0 - oldest_dest = time.time() - for d in self.__depends + self.sources: - if d.is_dir(): - continue - if not d.exists(): - return False - newest_dep = max((newest_dep, d.mtime())) - for d in self.dests: - if not d.exists(): - return False - oldest_dest = min((oldest_dest, d.mtime())) - - return oldest_dest >= newest_dep - except NotFound: - return False - - # Called by children to add things - - def add_depends(self, *deps): - map(lambda x:x.addUser(self), deps) - - self.__depends += list(deps) - - def run_command(self, cmd, cwd = None): - if isinstance(cmd, (str, unicode)): - raise ValueError("cmd must be a list of string") - - cmd = command.Command(cmd, - cwd = cwd, - on_done = self.__set_done) - self.__commands.append(cmd) - - def create_file(self, f_bblock, contents): - cmd = command.CreateFile(str(f_bblock), contents, - on_done = self.__set_done) - self.__commands.append(cmd) - - # Called by children to process synchronously - - def process(self): - self.prepare() - - if config.debug: - print 'Synchronously processing', self, - if self.__state == self.DONE: - if config.debug: - print 'already done' - return - - for d in list(self.__depends) + list(self.sources): - if d.generator.__state != self.DONE: - d.generator.process() - - if config.debug: - print 'launching...', self.__commands - self.todo_launch(True) - - # Private subprocess handling - - def stdout_reformat(self, msg): - ''' - Reformat stdout, to make error messages of specific tools - compatible with what is parsed by usual compilation tools. - ''' - return msg - - def stderr_reformat(self, msg): - ''' - Reformat stderr, to make error messages of specific tools - compatible with what is parsed by usual compilation tools. - ''' - return msg - - def __set_done(self, cmd, returncode, out, err): - - if out: - out = self.stdout_reformat(out) - sys.stdout.write('\n') - sys.stdout.write(out) - - if err: - err = self.stderr_reformat(err) - sys.stderr.write('\n') - sys.stderr.write(err) - - if returncode: - self.__state = self.FAILED - if returncode == -2: # sigint - raise KeyboardInterrupt() - raise ActionFailed(returncode, cmd.command) - - for d in self.dests: - d.touch() - - self.__next() - - def __next(self): - if len(self.__commands) == self.__cpt: - self.__state = self.DONE - return - cmd = self.__commands[self.__cpt] - self.__cpt += 1 - - cmd.run(self.__sync) - - # Todo API - - def todo_launch(self, synchronous = False): - self.__cpt = 0 - self.__state = self.WORKING - self.__sync = synchronous - self.__next() - - def todo_state(self): - return self.__state - - def todo_can_be_processed(self): - if not check_exist(self.sources): - self.__state = self.BLOCKED - return False - for d in list(self.__depends) + list(self.sources): - if d.generator.__state != self.DONE: - self.__state = self.BLOCKED - return False - self.__state = self.TODO - return True - - def why_blocked(self): - print self, 'blocked because' - if not check_exist(self.sources): - print "not all sources" - for d in list(self.__depends) + list(self.sources): - if d.generator.__state != self.DONE: - print d.generator, "not ready:", d.generator.__state - - def todo_get_depends(self): - return list(self.__depends) + list(self.sources) - - def todo_clean(self): - for i in self.dests: - i.delete() - - def source_changed(self): - self.todo_can_be_processed() - - # Helpers - - def __hash__(self): - return self.__hash - - def __eq__(self, other): - return self.__class__ is other.__class__ and \ - set(self.sources) == set(other.sources) and \ - set(self.dests) == set(other.dests) - - def __str__(self): - import bblock - l = lambda x:map(repr, x) - return "<%s: %s -> %s + %s>"%( - self.__class__.__name__, - l(self.sources), - l(self.dests), - l(self.__depends), - ) - - -class Noop(Action): - - def __init__(self): - Action.__init__(self, [], []) - - def is_valid(self): - return True diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc deleted file mode 100644 index 4a159ace62be47d4143464a23fbab9a8b39dca98..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py b/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py deleted file mode 100644 index 51053207cec60b94eeb19d4ba967b6be127c745b..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py +++ /dev/null @@ -1,208 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END -# -# Copyright (c) UPMC, Lip6, SoC -# Nicolas Pouillon <nipo@ssji.net>, 2007 -# -# Maintainers: group:toolmakers - -import os, os.path -import time - -from soclib_cc.config import config - -__id__ = "$Id: bblock.py 1750 2010-05-26 09:49:35Z nipo $" -__version__ = "$Revision: 1750 $" - -_global_bblock_registry = {} - -class BBlock: - def __init__(self, filename, generator = None): - self.is_blob = False - assert filename - if generator is None: - from action import Noop - generator = Noop() - self.__filename = filename - assert filename not in _global_bblock_registry - _global_bblock_registry[filename] = self - - self.generator = generator - self.__i_need = None - self.__needed_by = None - self.__prepared = False - self.__users = set() - - self.__rehash() - - @property - def users(self): - return self.__users - - def addUser(self, gen): -# print 'addUser', repr(self), str(gen)[:40] + '...' - self.__users.add(gen) - - def touch(self): - mt = self.__mtime - e = self.__exists - self.__rehash() - if mt != self.__mtime or e != self.__exists: - for u in self.__users: - u.source_changed() - - def is_dir(self): - return os.path.isdir(self.__filename) - - def setIsBlob(self, val = True): - self.is_blob = val - - def __rehash(self): - if os.path.exists(self.__filename): - self.__exists = True - self.__mtime = os.stat(self.__filename).st_mtime - else: - self.__exists = False - self.__mtime = time.time() + 4096 - - def mtime(self): - return self.__mtime - - def delete(self): - if os.path.isfile(self.__filename): - try: - os.unlink(self.__filename) - except OSError: - pass - self.__rehash() - - def generate(self): - self.generator.process() - - def exists(self): - return self.__exists - - def __str__(self): - return self.__filename - - def __repr__(self): - return '{%s}' % os.path.basename(self.__filename) - - def __hash__(self): - return hash(self.__filename) - - def __eq__(self, other): - return self.__filename == other.__filename - - def __walk_i_need(self): - if self.__i_need is not None: - return self.__i_need - - self.__i_need = set() - for d in self.generator.todo_get_depends(): - if d in self.__i_need: - continue - self.__i_need.add(d) - self.__i_need |= d.__walk_i_need() - return self.__i_need - - def __walk_needed_by(self): - if self.__needed_by is not None: - return self.__needed_by - - self.__needed_by = set() - for u in self.__users: - for d in u.dests: - if d is self.__needed_by: - continue - self.__needed_by.add(d) - self.__needed_by |= d.__walk_needed_by() - return self.__needed_by - - def prepare(self): - if self.__prepared: - return - - self.__walk_needed_by() - self.__walk_i_need() - - self.__prepared = True - - def needs(self, other): - return ( - (other in self.__i_need or self in other.__needed_by) and not - (self in other.__i_need or other in self.__needed_by) - ) - -class AnonymousBBlock(BBlock): - def __init__(self, builder): - self.__done = False - BBlock.__init__(self, '__anon_'+hex(id(builder)), builder) - - def touch(self): - self.__done = True - - def exists(self): - return self.__done - - def delete(self): - self.__done = False - - def prepare(self): - BBlock.prepare(self) - self.__done = False - - def __repr__(self): - return '{anon %03d}' % (hash(str(self)) % 1000) - -def bblockize1(f, gen = None): - if config.debug: - print 'BBlockizing', f, - if isinstance(f, BBlock): - if config.debug: - print 'already is' - return f - if f in _global_bblock_registry: - r = _global_bblock_registry[f] - if config.debug: - print 'in global reg', r - from action import Noop - if gen is not None: - if isinstance(r.generator, Noop): - r.generator = gen - elif r.generator.__class__ is not gen.__class__: - raise ValueError('Generator in reg: %s, passed: %s'%(r.generator.__class__, gen.__class__)) - return r - if config.debug: - print 'needs BBlock' - return BBlock(f, gen) - -def bblockize(files, gen = None): - return map(lambda x:bblockize1(x, gen), files) - -def filenames(bblocks): - ret = [] - for b in bblocks: - assert isinstance(b, BBlock) - if isinstance(b, AnonymousBBlock): - continue - ret.append(str(b)) - return ret diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc deleted file mode 100644 index 38b42daff97fbe17f14c38157623dc33b3e8f7c0..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/command.py b/MPSoC/soclib/utils/lib/python/soclib_builder/command.py deleted file mode 100644 index db631161c84d3b34b5b6700a652e39ea96a65856..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/command.py +++ /dev/null @@ -1,190 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END - -import os -import tempfile - -from soclib_cc.config import config - -__author__ = 'Nicolas Pouillon, <nipo@ssji.net>' -__copyright__ = 'UPMC, Lip6, SoC, 2007-2010' -__license__ = 'GPL-v2' -__id__ = "$Id: command.py 1787 2010-06-07 21:50:25Z nipo $" -__version__ = "$Revision: 1787 $" - -__all__ = ['Command'] - -class Command: - - __jobs = {} - - def __init__(self, cmd, cwd = None, on_done = None): - self.__cmd = cmd - self.__cwd = cwd - self.__on_done = on_done - self.__done = False - self.__stdout = '' - self.__stderr = '' - - @property - def stdout(self): - return self.__stdout - - @property - def stderr(self): - return self.__stderr - - @property - def command(self): - return ' '.join(map('"%s"'.__mod__, self.__cmd)) - - def run(self, synchronous = False): - import subprocess - #print "---- run", cmd - - if config.verbose: - print 'Running', ["async", "sync"][synchronous], self.command - - self.__out = tempfile.TemporaryFile("w+b", bufsize=128) - self.__err = tempfile.TemporaryFile("w+b", bufsize=128) - - try: - self.__handle = subprocess.Popen( - self.__cmd, - shell = False, - cwd = self.__cwd, - bufsize = 128*1024, - close_fds = True, - stdin = None, - stdout = self.__out, - stderr = self.__err, - ) - except OSError, e: - from action import ActionFailed - raise ActionFailed(-1, self.command) - - if synchronous: - self.__handle.wait() - self.__out.seek(0) - self.__err.seek(0) - self.__stdout = self.__out.read() - self.__stderr = self.__err.read() - ret = self.__handle.returncode - del self.__handle - del self.__out - del self.__err - return ret - - self.__class__.__jobs[self.__handle.pid] = self - - @classmethod - def pending_action_count(cls): - return len(cls.__jobs) - - @classmethod - def wait(cls): - try: - (pid, st) = os.wait() - killed = st & 0x80 - sig = st & 0x7f - ret = st >> 8 - cls.__jobs[pid].__handle.returncode = killed and -sig or ret - except Exception, e: - pass - for job in cls.__jobs.values()[:]: - p = job.__handle.poll() -# print "---- poll", job, p - if job.__handle.returncode is not None: - job.__set_done() - - def __set_done(self): - try: - self.__handle.communicate() - except: - pass - self.__out.seek(0) - self.__err.seek(0) - self.__stdout = self.__out.read() - self.__stderr = self.__err.read() - del self.__out - del self.__err - - #print '--' - del self.__class__.__jobs[self.__handle.pid] - - rc = self.__handle.returncode - del self.__handle - - if rc == 0: - self.__done = True - - if self.__on_done: - self.__on_done(self, rc, self.__stdout, self.__stderr) - - def is_background(self): - try: - return self.__handle.poll() is None - except: - return False - -class CreateFile: - def __init__(self, filename, contents, on_done = None): - self.__filename = filename - self.__contents = contents - self.__on_done = on_done - - def run(self, synchronous = False): - if config.verbose: - print 'Creating file', self.__filename - if os.path.exists(self.__filename): - fd = open(self.__filename, 'r+') - old = fd.read() - fd.seek(0) - if old != self.__contents: - fd.truncate() - fd.write(self.__contents) - else: - fd = open(self.__filename, 'w') - fd.write(self.__contents) - fd.close() - - if self.__on_done: - self.__on_done(self, 0, '', '') - - def is_background(self): - return False - -class CreateDir: - def __init__(self, filename, on_done = None): - self.__filename = filename - self.__on_done = on_done - - def run(self, synchronous = False): - if config.verbose: - print 'Creating directory', self.__filename - if not os.path.exists(self.__filename): - os.makedirs(self.__filename) - - if self.__on_done: - self.__on_done(self, 0, '', '') - - def is_background(self): - return False diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc deleted file mode 100644 index 5068798f11f625bb85e5966f28c3de4185dd5d55..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py b/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py deleted file mode 100644 index 44f5d51e5a079469c9b4b14146000ee57e9fe74d..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py +++ /dev/null @@ -1,77 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END -# -# Copyright (c) UPMC, Lip6, SoC -# Nicolas Pouillon <nipo@ssji.net>, 2007 -# -# Maintainers: group:toolmakers - -import os, os.path, time -import pickle - -from soclib_cc.config import config - -import bblock - -__id__ = "$Id: depends.py 2016 2011-01-21 10:45:27Z nipo $" -__version__ = "$Revision: 2016 $" - -__all__ = ['load', 'dump'] - -class MustRehash(Exception): - pass - -class DepPickler(pickle.Pickler): - def __init__(self, filename): - fd = open(filename, 'w') - pickle.Pickler.__init__(self, fd, pickle.HIGHEST_PROTOCOL) - def persistent_id(self, obj): - if isinstance(obj, bblock.BBlock): - return 'BBlock:'+str(obj) - -def dump(name, deps): - p = DepPickler(config.reposFile(name)) - p.dump(deps) - -class DepUnpickler(pickle.Unpickler): - def __init__(self, filename): - try: - fd = open(filename, 'r') -# print 'loading back depends %s'%filename - except IOError: -# print '%s not loadable'%filename - raise MustRehash() - pickle.Unpickler.__init__(self, fd) - self.last_mod = os.stat(filename).st_mtime - def persistent_load(self, ident): - mode,ide = ident.split(':',1) - if mode == 'BBlock': - r = bblock.bblockize1(ide) - if r.exists() and r.mtime() > self.last_mod: - raise MustRehash() - return r - -def load(name): - p = DepUnpickler(config.reposFile(name)) - try: - return p.load() - except: - raise MustRehash diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc deleted file mode 100644 index 2d50868fbd6bebb77f661351c3576ee237cfd3ff..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py b/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py deleted file mode 100644 index d959738c294768dc8a2ecac83214fbe43f132be2..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py +++ /dev/null @@ -1,46 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END -# -# Copyright (c) UPMC, Lip6, SoC -# Nicolas Pouillon <nipo@ssji.net>, 2007 -# -# Maintainers: group:toolmakers - -import os -import os.path -import action - -__id__ = "$Id: fileops.py 1750 2010-05-26 09:49:35Z nipo $" -__version__ = "$Revision: 1750 $" - -class CreateDir(action.Action): - info_code = 'D' - - def __init__(self, directory): - action.Action.__init__(self, [directory], []) - - def is_valid(self): - return os.path.isdir(str(self.dests[0])) - - def prepare(self): - for b in self.dests: - self.run_command(['mkdir', '-p', str(b)]) - action.Action.prepare(self) diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc deleted file mode 100644 index d8a5e81ea64d4638291e891ad38aaee359626da1..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py b/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py deleted file mode 100644 index 3b5def51dd4a55c39e4756b468db0995d8b51d16..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py +++ /dev/null @@ -1,60 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END -# -# Copyright (c) UPMC, Lip6, SoC -# Nicolas Pouillon <nipo@ssji.net>, 2007 -# -# Maintainers: group:toolmakers - -__all__ = ["MfRule"] - -__id__ = "$Id: mfparser.py 1750 2010-05-26 09:49:35Z nipo $" -__version__ = "$Revision: 1750 $" - -def bsfilter(spacer, l): - r = [] - next_follows = False - for i in l: - nf = next_follows - if i.endswith('\\'): - next_follows = True - i = i[:-1]+spacer - else: - next_follows = False - if nf: - r[-1] += i - else: - r.append(i) - return r - -class MfRule: - def __init__(self, text): - lines = filter(lambda x:not x.startswith('#'), - bsfilter("", text.split('\n'))) - try: - dest, prereq = lines[0].split(":",1) - except ValueError: - print lines[0] - raise - self.rules = lines[1:] - self.dest = bsfilter(" ", dest.strip().split()) - self.prerequisites = bsfilter(" ", filter(None, map( - lambda x:x.strip(), prereq.split()))) diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc deleted file mode 100644 index bfc32ac928158a271f59a44ecb5303bee4cbe896..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py b/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py deleted file mode 100644 index a2ad7d3431fe0e2bf3f42110dd0485626a120d02..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py +++ /dev/null @@ -1,55 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END -# -# Copyright (c) UPMC, Lip6, SoC -# Nicolas Pouillon <nipo@ssji.net>, 2007 -# -# Maintainers: group:toolmakers - -import os, os.path - -from soclib_cc.config import config - -from fileops import CreateDir -from action import Action - -__id__ = "$Id: textfile.py 1750 2010-05-26 09:49:35Z nipo $" -__version__ = "$Revision: 1750 $" - -class Textfile(Action): - info_code = 'S' - priority = 50 - - def __init__(self, output, contents): - Action.__init__(self, [output], [], contents = contents) - - def is_valid(self): - f = str(self.dests[0]) - if os.path.exists(f): - return open(f, 'r').read() == self.options['contents'] - return False - - def prepare(self): - self.create_file(self.dests[0], self.options['contents']) - Action.prepare(self) - -class CxxSource(Textfile): - pass diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc deleted file mode 100644 index d7eb13b550a5f431c8082a4b7b30401c9419e752..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py b/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py deleted file mode 100644 index 9989230b69b9847e4c43dbd13d40fe7bb9ded08c..0000000000000000000000000000000000000000 --- a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py +++ /dev/null @@ -1,319 +0,0 @@ - -# SOCLIB_GPL_HEADER_BEGIN -# -# This file is part of SoCLib, GNU GPLv2. -# -# SoCLib is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# SoCLib is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SoCLib; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# SOCLIB_GPL_HEADER_END - -__author__ = 'Nicolas Pouillon, <nipo@ssji.net>' -__copyright__ = 'UPMC, Lip6, SoC, 2007-2010' -__license__ = 'GPL-v2' -__id__ = "$Id: todo.py 1864 2010-08-31 14:45:01Z nipo $" -__version__ = "$Revision: 1864 $" - -import sys -import os, os.path - -from soclib_cc.config import config -from bblock import bblockize, BBlock, filenames -from action import Noop, ActionFailed, Action -import command -from soclib_utils.terminal import terminal_width - -__all__ = ['Todo'] - -class ToDo: - def __init__(self, *dests): - self.has_blob = False - self.dests = [] - self.add(*dests) - self.prepared = False - d = config.reposFile('') - if not os.path.isdir(d): - os.makedirs(d) - self.max_actions = config.toolchain.max_processes - self.__term_width = terminal_width() - self.__todo = [] - - def add(self, *dests): - self.dests += bblockize(dests) - for d in self.dests: - self.has_blob |= d.is_blob - - def _getall_bbs(self, dests): - dest_bb_list = set(dests) - viewed_bb_list = set() - todo_generator_list = set() - - while dest_bb_list: - bb = dest_bb_list.pop() - viewed_bb_list.add(bb) - - gen = bb.generator - gen.prepare() - dest_bb_list |= set(gen.todo_get_depends()) - todo_generator_list.add(gen) -# print gen - - dest_bb_list -= viewed_bb_list - - - def cr(x): - return not isinstance(x, Noop) - todo_generator_list = filter(cr, todo_generator_list) - return todo_generator_list, viewed_bb_list - - def prepare(self): - if self.prepared: - return - - try: - todo, bblocks = self._getall_bbs(self.dests) - except ActionFailed, e: - return self.handle_failed_action(e) - - for b in bblocks: - b.generator.prepare() - - for b in bblocks: - b.prepare() - - sorted_bblocks = [] - for b in bblocks: - done = False - for i, bb in reversed(list(enumerate(sorted_bblocks))): - if b.needs(bb): - sorted_bblocks.insert(i+1, b) - done = True - break - if not done: - sorted_bblocks.insert(0, b) - bblocks = sorted_bblocks - - self.__todo = [] - viewed = set() - for b in bblocks: - g = b.generator - if isinstance(g, Noop) or g in viewed: - continue - self.__todo.append(g) - viewed.add(g) - - if set(self.__todo) < set(todo): - print 'Lost generators in battle:' - for i in set(todo) - set(self.__todo): - for d in i.dests: - print d in self.dests, d.generator.__class__, d - raise RuntimeError() - -# self.__todo.reverse() - self.prepared = True - -# for i, g in enumerate(self.todo): -# print i, filenames(g.dests), filenames(g.sources) - - def clean(self): - self.prepare() - for i in self.__todo: - i.todo_clean() - - def handle_failed_action(self, e): - print "soclib-cc: *** Action failed with return value `%s'. Stop."%e.rval - if self.has_blob: - print '***********************************************' - print '***********************************************' - print '**** WARNING, YOU USED BINARY-ONLY MODULES ****' - print '***********************************************' - print '***********************************************' - print 'If you compilation failed because of linkage, this is most' - print 'likely a mismatch between expected libraries from a binary' - print 'only module and your system libraries (libstdc++, SystemC, ...)' - print - print "\x1b[91mPlease don't report any error about binary modules" - print "to SoCLib-CC maintainers, they'll ignore your requests.\x1b[m" - print - if config.verbose: - print "soclib-cc: Failed action: `%s'"%e.action - else: - import shlex - act = [] - was = None - cmdlist = e.action - if not isinstance(cmdlist, (list, tuple)): - cmdlist = shlex.split(cmdlist) - for a in cmdlist: - s = None - if a.startswith('-I'): - s = '-I' - if was != s and s: - act.append(s+'...') - elif not s: - act.append(a) - was = s - print "soclib-cc: Failed action: `%s'" % ' '.join(act) - print "soclib-cc: Command line shortened, rerun with -v for complete command line" - if command.Command.pending_action_count(): - print "soclib-cc: Waiting for unfinished jobs" - self.__wait_done() - raise - - def wait(self): - command.Command.wait() - - def __wait_done(self): - while command.Command.pending_action_count(): - self.progressBar() - command.Command.wait() - - def process(self): - import sys - self.prepare() - - if config.debug: - print 'Would do:' - print "="*80 - print "="*80 - for i, g in enumerate(self.__todo): - print i, g.is_valid(), str(g) - print "="*80 - print "="*80 - -# self.infoBar() - self.progressBar() - - while self.__build_as_much_as_possible() == False: - self.progressBar() - self.progressBar() - if config.progress_bar: - print - - def __build_as_much_as_possible(self): - wont = filter(lambda x:x.todo_state() in [Action.FAILED, Action.WORKING], - self.__todo) - left = filter(lambda x:x.todo_state() in [Action.TODO, Action.BLOCKED], - self.__todo) - if not left: - return True - possible = filter(lambda x:x.todo_can_be_processed(), - left) - if left and not possible and not wont: - print 'Left:' - for i in left: - i.why_blocked() - raise RuntimeError() - - try: - self.__run(possible) - except ActionFailed, e: - return self.handle_failed_action(e) - except OSError, e: - if hasattr(e, 'child_traceback'): - print e.child_traceback - raise - return False - - def __run(self, left): - # pop() takes from the end... - left.reverse() - -# print 'run' - - while left: - todo = left.pop() - if todo.todo_state() != Action.TODO: - continue - - while command.Command.pending_action_count() >= self.max_actions: - self.wait() - - if not todo.todo_can_be_processed(): - continue - - todo.todo_launch() - self.progressBar() - self.__wait_done() - - @staticmethod - def __progress_bar_code(state): - return { - Action.TODO: ' ', - Action.BLOCKED: '.', - Action.DONE: '=', - Action.WORKING: 'W', - Action.FAILED: '!', - }[state] - - def progressBar(self): - if not config.progress_bar or not self.prepared: - return - if self.__term_width < len(self.__todo) + 12: - self.__short_progress() - else: - self.__long_progress() - - def __long_progress(self): - pb = "" - left = 0 - for pi in self.__todo: - s = pi.todo_state() - if s == Action.TODO: - left += 1 - pb += self.__progress_bar_code(s) - sys.stdout.write('\r['+pb+']') - sys.stdout.write(' %d left ' % left) - sys.stdout.flush() - - def __short_progress(self): - states = { - Action.TODO : 'Todo', - Action.BLOCKED : 'Blocked', - Action.DONE : 'Done', - Action.WORKING : 'Working', - Action.FAILED : 'Failed', - } - counts = dict([(k, 0) for k in states.keys()]) - for i in self.__todo: - counts[i.todo_state()] += 1 - pc = 100. * counts[Action.DONE] / len(self.__todo) - sys.stdout.write('\r % 3d%% done' % int(pc)) - for k in sorted(states.keys()): - sys.stdout.write(', %3d %s' % (counts[k], states[k])) - sys.stdout.write(' \r') - sys.stdout.flush() - - def infoBar(self): - if not config.progress_bar: - return - pb = "" - for pi in self.__todo: - pb += pi.info_code - sys.stdout.write('['+pb+']\n') - sys.stdout.flush() - - def format(self, formatter_class_name, output): - self.prepare() - - nodes = formatter_class_name.split('.') - module = '.'.join(nodes[:-1]) - tmp = __import__(module, globals(), locals(), [nodes[-1]]) - formatter = getattr(tmp, nodes[-1]) - - f = formatter(output) - for a in self.__todo: - f.format_action(a) - - diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc deleted file mode 100644 index 0862f3a8de8fcd190294a75e6fb2ebc1a1a6ae64..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc deleted file mode 100644 index c42b25cac1e32bfeb1a1eabbb1c053f654bd21c7..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc deleted file mode 100644 index 5efa732f2bd7af57a94de04d8d5e72ae68df104e..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc deleted file mode 100644 index ab33216b6d0180fb7c369f0ff2adc69ce36bb32b..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc deleted file mode 100644 index 77c23824b81076e6f30beb9f45be6e45d53ba381..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc deleted file mode 100644 index 458e8a66ee7e9af159691b1175e313f9f839dacd..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc deleted file mode 100644 index 6386727b8b85bf56a87e0c6bb5aad11bb9903327..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc deleted file mode 100644 index 9a3d803c473d2e79fca565e88d7c21c12975bca2..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc deleted file mode 100644 index a926fe7fc93a017ca4701175478411ba581b400b..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc deleted file mode 100644 index 53781f3db768be6b526ffc41341bb2147bf40005..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc deleted file mode 100644 index c83e72c7d689b557730561b038fd4815cabc528e..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc deleted file mode 100644 index bfee456b4ef0cfa57d7e6afee90e7dc6b92ecbb6..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc deleted file mode 100644 index a76d3c102ce50e55062ec248c7cd5a25de265620..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc deleted file mode 100644 index 7651c3d55ca0e6746ecd3b0bfde6bc909de977af..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc deleted file mode 100644 index 6b429194f2e62079ddcfb2c616fed232bbe95b5e..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc deleted file mode 100644 index 44d4912288ae02aa09384f217c70d96fe94bfba3..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc deleted file mode 100644 index 86d7d05b968c4549404e7b85302b87537fb48f42..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc deleted file mode 100644 index d688b00381112979ff5bceb56a4184068fbdfcab..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc deleted file mode 100644 index cd5bb387974d4a4c874ccbd7570ba6f4d90e7c0a..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc deleted file mode 100644 index bb33dc0245581f135ce6c3270a7a1b017c4e5b57..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc deleted file mode 100644 index ad537c2cd91b56621b6915f41a47ac2bd880997d..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc deleted file mode 100644 index 8d84a3f5ff0d2ec4cdbb87cc3b97aa40d594269c..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc and /dev/null differ diff --git a/MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc b/MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc deleted file mode 100644 index f91268807a4cc26093ce0ab8f4ee1359cdd6bfb0..0000000000000000000000000000000000000000 Binary files a/MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc and /dev/null differ diff --git a/modeling/LIP6/monoprocessor.xml b/modeling/LIP6/monoprocessor.xml index f9d7a3a9410ffbc4051a288f5eae37e60cd85c7e..cc9cca4deee1e572edb8528cb09c801eb6ebf6b0 100644 --- a/modeling/LIP6/monoprocessor.xml +++ b/modeling/LIP6/monoprocessor.xml @@ -7,7 +7,7 @@ <MainCode value="void __user_init() {"/> <MainCode value="}"/> <Optimized value="true" /> -<Validated value="Block0;" /> +<Validated value="" /> <Ignored value="" /> <COMPONENT type="5000" id="25" > @@ -63,6 +63,7 @@ <cdparam x="458" y="139" /> <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" /> <infoparam name="List of all parameters of an Avatar SMD transition" value="" /> <TGConnectingPoint num="0" id="26" /> @@ -70,12 +71,12 @@ <TGConnectingPoint num="2" id="28" /> <TGConnectingPoint num="3" id="29" /> <extraparam> -<guard value="[ ]" /> -<afterMin value="" /> -<afterMax value="" /> -<computeMin value="" /> -<computeMax value="" /> -<probability value="" /> +<guard value="[ ]" enabled="true"/> +<afterMin value="" enabled="true"/> +<afterMax value="" enabled="true"/> +<computeMin value="" enabled="true"/> +<computeMax value="" enabled="true"/> +<probability value="" enabled="true"/> </extraparam> </SUBCOMPONENT> @@ -92,6 +93,7 @@ <cdparam x="407" y="110" /> <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" /> <infoparam name="List of all parameters of an Avatar SMD transition" value="" /> <TGConnectingPoint num="0" id="33" /> @@ -99,12 +101,12 @@ <TGConnectingPoint num="2" id="35" /> <TGConnectingPoint num="3" id="36" /> <extraparam> -<guard value="[ ]" /> -<afterMin value="" /> -<afterMax value="" /> -<computeMin value="" /> -<computeMax value="" /> -<probability value="" /> +<guard value="[ ]" enabled="true"/> +<afterMin value="" enabled="true"/> +<afterMax value="" enabled="true"/> +<computeMin value="" enabled="true"/> +<computeMax value="" enabled="true"/> +<probability value="" enabled="true"/> </extraparam> </SUBCOMPONENT> @@ -121,6 +123,7 @@ <cdparam x="410" y="65" /> <sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" /> <infoparam name="state0" value="state0" /> <TGConnectingPoint num="0" id="42" /> @@ -554,7 +557,7 @@ <Attribute period="6.0" time="ns" processCode="void processing() { in.read(); } - " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" /> + " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" /> </extraparam> </SUBCOMPONENT> <SUBCOMPONENT type="1604" id="264" > @@ -599,7 +602,7 @@ out_de.write( (int) x); tdf_out.write(x); } - " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" /> + " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" /> </extraparam> </SUBCOMPONENT> <SUBCOMPONENT type="1606" id="283" > diff --git a/modeling/testforkandjoin.xml b/modeling/testforkandjoin.xml index f79ec47ac555f8a44ceaecd6d64a524089754fa7..f2051759180f2d97b9d58d269224b8521f04c7d8 100644 --- a/modeling/testforkandjoin.xml +++ b/modeling/testforkandjoin.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <TURTLEGMODELING version="1.0beta"> @@ -9,7 +9,7 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> <P1 x="418" y="288" id="5" /> -<P2 x="521" y="399" id="20" /> +<P2 x="508" y="412" id="20" /> <AutomaticDrawing data="true" /> </CONNECTOR> <CONNECTOR type="126" id="2" > @@ -17,14 +17,14 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> <P1 x="412" y="279" id="7" /> -<P2 x="525" y="159" id="31" /> +<P2 x="512" y="172" id="31" /> <AutomaticDrawing data="true" /> </CONNECTOR> <CONNECTOR type="126" id="3" > <cdparam x="292" y="261" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> -<P1 x="279" y="248" id="42" /> +<P1 x="292" y="261" id="42" /> <P2 x="396" y="288" id="4" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -176,12 +176,13 @@ <cdparam x="377" y="113" /> <sizeparam width="74" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="read channel" value="chfork2(5) " /> <TGConnectingPoint num="0" id="55" /> <TGConnectingPoint num="1" id="56" /> <extraparam> -<Data channelName="chfork2" nbOfSamples="5" secPattern="" isAttacker="No" /> +<Data channelName="chfork2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -198,7 +199,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="58" /> +<P1 x="407" y="65" id="58" /> <P2 x="414" y="108" id="55" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -227,12 +228,13 @@ <cdparam x="382" y="110" /> <sizeparam width="74" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="read channel" value="chfork1(5) " /> <TGConnectingPoint num="0" id="64" /> <TGConnectingPoint num="1" id="65" /> <extraparam> -<Data channelName="chfork1" nbOfSamples="5" secPattern="" isAttacker="No" /> +<Data channelName="chfork1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -249,7 +251,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="67" /> +<P1 x="407" y="65" id="67" /> <P2 x="419" y="105" id="64" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -278,12 +280,13 @@ <cdparam x="382" y="112" /> <sizeparam width="62" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="write channel" value="chfork(5)" /> <TGConnectingPoint num="0" id="73" /> <TGConnectingPoint num="1" id="74" /> <extraparam> -<Data channelName="chfork" nbOfSamples="5" secPattern="" isAttacker="No" /> +<Data channelName="chfork" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -300,7 +303,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="76" /> +<P1 x="407" y="65" id="76" /> <P2 x="413" y="107" id="73" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -504,9 +507,9 @@ <SUBCOMPONENT type="1101" id="188" > <father id="213" num="0" /> <cdparam x="105" y="292" /> -<sizeparam width="100" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="102" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="104" minY="0" maxY="60" /> +<cdrectangleparam minX="0" maxX="102" minY="0" maxY="60" /> <infoparam name="TGComponent" value="FVFork::src" /> <TGConnectingPoint num="0" id="180" /> <TGConnectingPoint num="1" id="181" /> @@ -559,9 +562,9 @@ <SUBCOMPONENT type="1101" id="222" > <father id="247" num="0" /> <cdparam x="1349" y="701" /> -<sizeparam width="116" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="119" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="134" minY="0" maxY="160" /> +<cdrectangleparam minX="0" maxX="131" minY="0" maxY="160" /> <infoparam name="TGComponent" value="FVFork::Dest2" /> <TGConnectingPoint num="0" id="214" /> <TGConnectingPoint num="1" id="215" /> @@ -614,9 +617,9 @@ <SUBCOMPONENT type="1101" id="256" > <father id="281" num="0" /> <cdparam x="1165" y="190" /> -<sizeparam width="116" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="119" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="121" minY="0" maxY="66" /> +<cdrectangleparam minX="0" maxX="118" minY="0" maxY="66" /> <infoparam name="TGComponent" value="FVFork::Dest1" /> <TGConnectingPoint num="0" id="248" /> <TGConnectingPoint num="1" id="249" /> @@ -741,9 +744,9 @@ <SUBCOMPONENT type="1103" id="340" > <father id="365" num="0" /> <cdparam x="854" y="834" /> -<sizeparam width="174" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="178" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="209" minY="0" maxY="162" /> +<cdrectangleparam minX="0" maxX="205" minY="0" maxY="162" /> <infoparam name="TGComponent" value="FVFork::chfork__chfork2" /> <TGConnectingPoint num="0" id="332" /> <TGConnectingPoint num="1" id="333" /> @@ -796,9 +799,9 @@ <SUBCOMPONENT type="1103" id="374" > <father id="399" num="0" /> <cdparam x="668" y="132" /> -<sizeparam width="174" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="178" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="172" minY="0" maxY="120" /> +<cdrectangleparam minX="0" maxX="168" minY="0" maxY="120" /> <infoparam name="TGComponent" value="FVFork::chfork__chfork1" /> <TGConnectingPoint num="0" id="366" /> <TGConnectingPoint num="1" id="367" /> @@ -1115,12 +1118,13 @@ <cdparam x="375" y="98" /> <sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="write channel" value="chjoin1(5)" /> <TGConnectingPoint num="0" id="464" /> <TGConnectingPoint num="1" id="465" /> <extraparam> -<Data channelName="chjoin1" nbOfSamples="5" secPattern="" isAttacker="No" /> +<Data channelName="chjoin1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -1137,7 +1141,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="467" /> +<P1 x="407" y="65" id="467" /> <P2 x="411" y="93" id="464" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -1166,12 +1170,13 @@ <cdparam x="385" y="106" /> <sizeparam width="77" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="read channel" value="chjoin(10) " /> <TGConnectingPoint num="0" id="473" /> <TGConnectingPoint num="1" id="474" /> <extraparam> -<Data channelName="chjoin" nbOfSamples="10" secPattern="" isAttacker="No" /> +<Data channelName="chjoin" nbOfSamples="10" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -1188,7 +1193,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="476" /> +<P1 x="407" y="65" id="476" /> <P2 x="423" y="101" id="473" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -1217,12 +1222,13 @@ <cdparam x="377" y="108" /> <sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="write channel" value="chjoin2(5)" /> <TGConnectingPoint num="0" id="482" /> <TGConnectingPoint num="1" id="483" /> <extraparam> -<Data channelName="chjoin2" nbOfSamples="5" secPattern="" isAttacker="No" /> +<Data channelName="chjoin2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -1239,7 +1245,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="485" /> +<P1 x="407" y="65" id="485" /> <P2 x="413" y="103" id="482" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -1334,11 +1340,11 @@ </COMPONENT> <SUBCOMPONENT type="1103" id="522" > <father id="556" num="0" /> -<cdparam x="146" y="537" /> +<cdparam x="170" y="586" /> <sizeparam width="166" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="0" maxX="101" minY="0" maxY="175" /> -<infoparam name="TGComponent" value="FVJoin::chjoin2__chjoin" /> +<infoparam name="TGComponent" value="FVJoin::chjoin1__chjoin" /> <TGConnectingPoint num="0" id="514" /> <TGConnectingPoint num="1" id="515" /> <TGConnectingPoint num="2" id="516" /> @@ -1348,16 +1354,16 @@ <TGConnectingPoint num="6" id="520" /> <TGConnectingPoint num="7" id="521" /> <extraparam> -<info value="FVJoin::chjoin2__chjoin" communicationName="chjoin2__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" /> +<info value="FVJoin::chjoin1__chjoin" communicationName="chjoin1__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" /> </extraparam> </SUBCOMPONENT> <SUBCOMPONENT type="1103" id="531" > <father id="556" num="1" /> -<cdparam x="170" y="586" /> +<cdparam x="146" y="537" /> <sizeparam width="166" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="0" maxX="101" minY="0" maxY="175" /> -<infoparam name="TGComponent" value="FVJoin::chjoin1__chjoin" /> +<infoparam name="TGComponent" value="FVJoin::chjoin2__chjoin" /> <TGConnectingPoint num="0" id="523" /> <TGConnectingPoint num="1" id="524" /> <TGConnectingPoint num="2" id="525" /> @@ -1367,7 +1373,7 @@ <TGConnectingPoint num="6" id="529" /> <TGConnectingPoint num="7" id="530" /> <extraparam> -<info value="FVJoin::chjoin1__chjoin" communicationName="chjoin1__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" /> +<info value="FVJoin::chjoin2__chjoin" communicationName="chjoin2__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" /> </extraparam> </SUBCOMPONENT> @@ -1481,9 +1487,9 @@ <SUBCOMPONENT type="1101" id="615" > <father id="640" num="0" /> <cdparam x="183" y="295" /> -<sizeparam width="103" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="105" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="101" minY="0" maxY="60" /> +<cdrectangleparam minX="0" maxX="99" minY="0" maxY="60" /> <infoparam name="TGComponent" value="FVJoin::dest" /> <TGConnectingPoint num="0" id="607" /> <TGConnectingPoint num="1" id="608" /> @@ -1979,12 +1985,13 @@ <cdparam x="380" y="117" /> <sizeparam width="69" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="read channel" value="comm(3) " /> <TGConnectingPoint num="0" id="844" /> <TGConnectingPoint num="1" id="845" /> <extraparam> -<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" /> +<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -2001,7 +2008,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="847" /> +<P1 x="407" y="65" id="847" /> <P2 x="414" y="112" id="844" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -2030,12 +2037,13 @@ <cdparam x="378" y="98" /> <sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="write channel" value="comm(3)" /> <TGConnectingPoint num="0" id="853" /> <TGConnectingPoint num="1" id="854" /> <extraparam> -<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" /> +<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" isEncForm="No" /> </extraparam> </COMPONENT> @@ -2052,7 +2060,7 @@ <cdparam x="407" y="70" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="856" /> +<P1 x="407" y="65" id="856" /> <P2 x="410" y="93" id="853" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -2074,176 +2082,157 @@ <Modeling type="TML Architecture" nameTab="Architecture" > <TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" > -<COMPONENT type="1105" id="884" > +<COMPONENT type="1105" id="893" > <cdparam x="669" y="81" /> <sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="Memory0" value="name" /> -<TGConnectingPoint num="0" id="860" /> -<TGConnectingPoint num="1" id="861" /> -<TGConnectingPoint num="2" id="862" /> -<TGConnectingPoint num="3" id="863" /> -<TGConnectingPoint num="4" id="864" /> -<TGConnectingPoint num="5" id="865" /> -<TGConnectingPoint num="6" id="866" /> -<TGConnectingPoint num="7" id="867" /> -<TGConnectingPoint num="8" id="868" /> -<TGConnectingPoint num="9" id="869" /> -<TGConnectingPoint num="10" id="870" /> -<TGConnectingPoint num="11" id="871" /> -<TGConnectingPoint num="12" id="872" /> -<TGConnectingPoint num="13" id="873" /> -<TGConnectingPoint num="14" id="874" /> -<TGConnectingPoint num="15" id="875" /> -<TGConnectingPoint num="16" id="876" /> -<TGConnectingPoint num="17" id="877" /> -<TGConnectingPoint num="18" id="878" /> -<TGConnectingPoint num="19" id="879" /> -<TGConnectingPoint num="20" id="880" /> -<TGConnectingPoint num="21" id="881" /> -<TGConnectingPoint num="22" id="882" /> -<TGConnectingPoint num="23" id="883" /> +<TGConnectingPoint num="0" id="869" /> +<TGConnectingPoint num="1" id="870" /> +<TGConnectingPoint num="2" id="871" /> +<TGConnectingPoint num="3" id="872" /> +<TGConnectingPoint num="4" id="873" /> +<TGConnectingPoint num="5" id="874" /> +<TGConnectingPoint num="6" id="875" /> +<TGConnectingPoint num="7" id="876" /> +<TGConnectingPoint num="8" id="877" /> +<TGConnectingPoint num="9" id="878" /> +<TGConnectingPoint num="10" id="879" /> +<TGConnectingPoint num="11" id="880" /> +<TGConnectingPoint num="12" id="881" /> +<TGConnectingPoint num="13" id="882" /> +<TGConnectingPoint num="14" id="883" /> +<TGConnectingPoint num="15" id="884" /> +<TGConnectingPoint num="16" id="885" /> +<TGConnectingPoint num="17" id="886" /> +<TGConnectingPoint num="18" id="887" /> +<TGConnectingPoint num="19" id="888" /> +<TGConnectingPoint num="20" id="889" /> +<TGConnectingPoint num="21" id="890" /> +<TGConnectingPoint num="22" id="891" /> +<TGConnectingPoint num="23" id="892" /> <extraparam> <info stereotype="MEMORY" nodeName="Memory0" /> <attributes byteDataSize="4" memorySize="1024" clockRatio="1" bufferType="0" /> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1103" id="974" > -<father id="884" num="0" /> +<SUBCOMPONENT type="1103" id="868" > +<father id="893" num="0" /> <cdparam x="672" y="150" /> -<sizeparam width="113" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="111" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="87" minY="0" maxY="160" /> +<cdrectangleparam minX="0" maxX="89" minY="0" maxY="160" /> <infoparam name="TGComponent" value="Basic::comm" /> -<TGConnectingPoint num="0" id="975" /> -<TGConnectingPoint num="1" id="976" /> -<TGConnectingPoint num="2" id="977" /> -<TGConnectingPoint num="3" id="978" /> -<TGConnectingPoint num="4" id="979" /> -<TGConnectingPoint num="5" id="980" /> -<TGConnectingPoint num="6" id="981" /> -<TGConnectingPoint num="7" id="982" /> +<TGConnectingPoint num="0" id="860" /> +<TGConnectingPoint num="1" id="861" /> +<TGConnectingPoint num="2" id="862" /> +<TGConnectingPoint num="3" id="863" /> +<TGConnectingPoint num="4" id="864" /> +<TGConnectingPoint num="5" id="865" /> +<TGConnectingPoint num="6" id="866" /> +<TGConnectingPoint num="7" id="867" /> <extraparam> <info value="Basic::comm" communicationName="comm" referenceCommunicationName="Basic" priority="0" typeName="channel" /> </extraparam> </SUBCOMPONENT> -<COMPONENT type="1102" id="918" > +<COMPONENT type="1102" id="927" > <cdparam x="418" y="340" /> <sizeparam width="362" height="126" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="Bus0" value="name" /> -<TGConnectingPoint num="0" id="894" /> -<TGConnectingPoint num="1" id="895" /> -<TGConnectingPoint num="2" id="896" /> -<TGConnectingPoint num="3" id="897" /> -<TGConnectingPoint num="4" id="898" /> -<TGConnectingPoint num="5" id="899" /> -<TGConnectingPoint num="6" id="900" /> -<TGConnectingPoint num="7" id="901" /> -<TGConnectingPoint num="8" id="902" /> -<TGConnectingPoint num="9" id="903" /> -<TGConnectingPoint num="10" id="904" /> -<TGConnectingPoint num="11" id="905" /> -<TGConnectingPoint num="12" id="906" /> -<TGConnectingPoint num="13" id="907" /> -<TGConnectingPoint num="14" id="908" /> -<TGConnectingPoint num="15" id="909" /> -<TGConnectingPoint num="16" id="910" /> -<TGConnectingPoint num="17" id="911" /> -<TGConnectingPoint num="18" id="912" /> -<TGConnectingPoint num="19" id="913" /> -<TGConnectingPoint num="20" id="914" /> -<TGConnectingPoint num="21" id="915" /> -<TGConnectingPoint num="22" id="916" /> -<TGConnectingPoint num="23" id="917" /> +<TGConnectingPoint num="0" id="903" /> +<TGConnectingPoint num="1" id="904" /> +<TGConnectingPoint num="2" id="905" /> +<TGConnectingPoint num="3" id="906" /> +<TGConnectingPoint num="4" id="907" /> +<TGConnectingPoint num="5" id="908" /> +<TGConnectingPoint num="6" id="909" /> +<TGConnectingPoint num="7" id="910" /> +<TGConnectingPoint num="8" id="911" /> +<TGConnectingPoint num="9" id="912" /> +<TGConnectingPoint num="10" id="913" /> +<TGConnectingPoint num="11" id="914" /> +<TGConnectingPoint num="12" id="915" /> +<TGConnectingPoint num="13" id="916" /> +<TGConnectingPoint num="14" id="917" /> +<TGConnectingPoint num="15" id="918" /> +<TGConnectingPoint num="16" id="919" /> +<TGConnectingPoint num="17" id="920" /> +<TGConnectingPoint num="18" id="921" /> +<TGConnectingPoint num="19" id="922" /> +<TGConnectingPoint num="20" id="923" /> +<TGConnectingPoint num="21" id="924" /> +<TGConnectingPoint num="22" id="925" /> +<TGConnectingPoint num="23" id="926" /> <extraparam> <info stereotype="BUS-RR" nodeName="Bus0" /> <attributes byteDataSize="4" arbitrationPolicy="0" sliceTime="10000" pipelineSize="1" clockRatio="1" privacy="0" referenceAttack="null" /> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1103" id="893" > -<father id="918" num="0" /> +<SUBCOMPONENT type="1103" id="902" > +<father id="927" num="0" /> <cdparam x="557" y="388" /> -<sizeparam width="113" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="111" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="249" minY="0" maxY="86" /> +<cdrectangleparam minX="0" maxX="251" minY="0" maxY="86" /> <infoparam name="TGComponent" value="Basic::comm" /> -<TGConnectingPoint num="0" id="885" /> -<TGConnectingPoint num="1" id="886" /> -<TGConnectingPoint num="2" id="887" /> -<TGConnectingPoint num="3" id="888" /> -<TGConnectingPoint num="4" id="889" /> -<TGConnectingPoint num="5" id="890" /> -<TGConnectingPoint num="6" id="891" /> -<TGConnectingPoint num="7" id="892" /> +<TGConnectingPoint num="0" id="894" /> +<TGConnectingPoint num="1" id="895" /> +<TGConnectingPoint num="2" id="896" /> +<TGConnectingPoint num="3" id="897" /> +<TGConnectingPoint num="4" id="898" /> +<TGConnectingPoint num="5" id="899" /> +<TGConnectingPoint num="6" id="900" /> +<TGConnectingPoint num="7" id="901" /> <extraparam> <info value="Basic::comm" communicationName="comm" referenceCommunicationName="Basic" priority="0" typeName="channel" /> </extraparam> </SUBCOMPONENT> -<COMPONENT type="1100" id="961" > +<COMPONENT type="1100" id="970" > <cdparam x="198" y="79" /> <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="CPU0" value="name" /> -<TGConnectingPoint num="0" id="937" /> -<TGConnectingPoint num="1" id="938" /> -<TGConnectingPoint num="2" id="939" /> -<TGConnectingPoint num="3" id="940" /> -<TGConnectingPoint num="4" id="941" /> -<TGConnectingPoint num="5" id="942" /> -<TGConnectingPoint num="6" id="943" /> -<TGConnectingPoint num="7" id="944" /> -<TGConnectingPoint num="8" id="945" /> -<TGConnectingPoint num="9" id="946" /> -<TGConnectingPoint num="10" id="947" /> -<TGConnectingPoint num="11" id="948" /> -<TGConnectingPoint num="12" id="949" /> -<TGConnectingPoint num="13" id="950" /> -<TGConnectingPoint num="14" id="951" /> -<TGConnectingPoint num="15" id="952" /> -<TGConnectingPoint num="16" id="953" /> -<TGConnectingPoint num="17" id="954" /> -<TGConnectingPoint num="18" id="955" /> -<TGConnectingPoint num="19" id="956" /> -<TGConnectingPoint num="20" id="957" /> -<TGConnectingPoint num="21" id="958" /> -<TGConnectingPoint num="22" id="959" /> -<TGConnectingPoint num="23" id="960" /> +<TGConnectingPoint num="0" id="946" /> +<TGConnectingPoint num="1" id="947" /> +<TGConnectingPoint num="2" id="948" /> +<TGConnectingPoint num="3" id="949" /> +<TGConnectingPoint num="4" id="950" /> +<TGConnectingPoint num="5" id="951" /> +<TGConnectingPoint num="6" id="952" /> +<TGConnectingPoint num="7" id="953" /> +<TGConnectingPoint num="8" id="954" /> +<TGConnectingPoint num="9" id="955" /> +<TGConnectingPoint num="10" id="956" /> +<TGConnectingPoint num="11" id="957" /> +<TGConnectingPoint num="12" id="958" /> +<TGConnectingPoint num="13" id="959" /> +<TGConnectingPoint num="14" id="960" /> +<TGConnectingPoint num="15" id="961" /> +<TGConnectingPoint num="16" id="962" /> +<TGConnectingPoint num="17" id="963" /> +<TGConnectingPoint num="18" id="964" /> +<TGConnectingPoint num="19" id="965" /> +<TGConnectingPoint num="20" id="966" /> +<TGConnectingPoint num="21" id="967" /> +<TGConnectingPoint num="22" id="968" /> +<TGConnectingPoint num="23" id="969" /> <extraparam> <info stereotype="CPURR" nodeName="CPU0" /> <attributes nbOfCores="1" byteDataSize="4" schedulingPolicy="0" sliceTime="10000" goIdleTime="10" maxConsecutiveIdleCycles="10" pipelineSize="5" taskSwitchingTime="20" branchingPredictionPenalty="2" cacheMiss="5" execiTime="1" execcTime="1" clockRatio="1" MECType="0" encryption="0"/> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1101" id="927" > -<father id="961" num="0" /> -<cdparam x="258" y="136" /> -<sizeparam width="113" height="54" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="137" minY="0" maxY="146" /> -<infoparam name="TGComponent" value="Basic::Task1" /> -<TGConnectingPoint num="0" id="919" /> -<TGConnectingPoint num="1" id="920" /> -<TGConnectingPoint num="2" id="921" /> -<TGConnectingPoint num="3" id="922" /> -<TGConnectingPoint num="4" id="923" /> -<TGConnectingPoint num="5" id="924" /> -<TGConnectingPoint num="6" id="925" /> -<TGConnectingPoint num="7" id="926" /> -<extraparam> -<info value="Basic::Task1" taskName="Task1" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" /> -</extraparam> -</SUBCOMPONENT> <SUBCOMPONENT type="1101" id="936" > -<father id="961" num="1" /> +<father id="970" num="0" /> <cdparam x="267" y="218" /> -<sizeparam width="113" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="110" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="137" minY="0" maxY="160" /> +<cdrectangleparam minX="0" maxX="140" minY="0" maxY="160" /> <infoparam name="TGComponent" value="Basic::Task2" /> <TGConnectingPoint num="0" id="928" /> <TGConnectingPoint num="1" id="929" /> @@ -2257,25 +2246,44 @@ <info value="Basic::Task2" taskName="Task2" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" /> </extraparam> </SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="945" > +<father id="970" num="1" /> +<cdparam x="258" y="136" /> +<sizeparam width="110" height="54" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="140" minY="0" maxY="146" /> +<infoparam name="TGComponent" value="Basic::Task1" /> +<TGConnectingPoint num="0" id="937" /> +<TGConnectingPoint num="1" id="938" /> +<TGConnectingPoint num="2" id="939" /> +<TGConnectingPoint num="3" id="940" /> +<TGConnectingPoint num="4" id="941" /> +<TGConnectingPoint num="5" id="942" /> +<TGConnectingPoint num="6" id="943" /> +<TGConnectingPoint num="7" id="944" /> +<extraparam> +<info value="Basic::Task1" taskName="Task1" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> -<CONNECTOR type="125" id="962" > +<CONNECTOR type="125" id="971" > <cdparam x="719" y="281" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="{info}" /> -<P1 x="719" y="281" id="874" /> -<P2 x="689" y="340" id="903" /> +<P1 x="719" y="281" id="883" /> +<P2 x="689" y="340" id="912" /> <AutomaticDrawing data="true" /> <extraparam> <info priority="0" /> <spy value="false" /> </extraparam> </CONNECTOR> -<CONNECTOR type="125" id="963" > +<CONNECTOR type="125" id="972" > <cdparam x="385" y="279" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="{info}" /> -<P1 x="385" y="279" id="952" /> -<P2 x="418" y="340" id="894" /> +<P1 x="385" y="279" id="961" /> +<P2 x="418" y="340" id="903" /> <AutomaticDrawing data="true" /> <extraparam> <info priority="0" />