From 75f2260fb84197ba515c4f67faafeffecff67608 Mon Sep 17 00:00:00 2001 From: "huanfeng.wang" Date: Wed, 15 Nov 2023 09:50:20 +0800 Subject: [PATCH] update rtos code --- public/rtos/code/hw_q_code/Src/hwque.c | 485 +++++++++----- public/rtos/code/hw_q_code/inc/hwque.h | 256 ++++---- public/rtos/code/hw_q_code/inc/osp_io.h | 26 - public/rtos/code/hw_q_code/lib/libhwque.a | Bin 0 -> 10002 bytes .../Src/__ucps2_interrupt.s.asm | 25 +- public/rtos/code/interrupt_code/Src/alg.s.c | 49 ++ .../code/interrupt_code/Src/inter_vector.s.c | 465 ++++++++++++++ .../interrupt_code/{interrupt => }/inc/alg.h | 0 .../interrupt_code/{interrupt => }/inc/csu.h | 0 .../{interrupt => }/inc/error.h | 0 .../{interrupt => }/inc/gs_que.h | 0 .../code/interrupt_code/inc/inter_vector.h | 150 +++++ .../{interrupt => }/inc/pet_ctrl.h | 0 .../{interrupt => }/inc/ucp_js_ctrl.h | 0 .../{interrupt => }/inc/ucp_param.h | 0 .../{interrupt => }/inc/ucp_sfr_c.h | 0 .../code/interrupt_code/interrupt/.cproject | 126 ---- .../rtos/code/interrupt_code/interrupt/.mapu | 8 - .../code/interrupt_code/interrupt/.project | 27 - .../.settings/org.eclipse.cdt.core.prefs | 5 - .../interrupt/Debug/Src/inter_vector.s.d | 47 -- .../interrupt/Debug/Src/subdir.mk | 35 - .../interrupt_code/interrupt/Debug/makefile | 43 -- .../interrupt_code/interrupt/Debug/objects.mk | 8 - .../interrupt/Src/inter_vector.s.c | 596 ------------------ .../interrupt/inc/inter_vector.h | 150 ----- .../interrupt_code/interrupt/makefile.init | 12 - .../code/interrupt_code/lib/libinterrupt.a | Bin 0 -> 10418 bytes .../rtos/code/interrupt_code/libinterrupt.a | Bin 9838 -> 0 bytes public/rtos/code/interrupt_code/libsmartos.a | Bin 141124 -> 0 bytes .../code/smartos_code/Debug/Src/SmartOS.s.d | 88 --- .../rtos/code/smartos_code/Debug/Src/alg.s.d | 3 - .../smartos_code/Debug/Src/func_lib_ape.d | 33 - .../smartos_code/Debug/Src/inter_vector.s.d | 120 ---- .../code/smartos_code/Debug/Src/mailbox.s.d | 5 - .../code/smartos_code/Debug/Src/os_core.s.d | 77 --- .../code/smartos_code/Debug/Src/os_cpu_c.s.d | 77 --- .../code/smartos_code/Debug/Src/os_dbg_r.s.d | 77 --- .../code/smartos_code/Debug/Src/os_flag.s.d | 77 --- .../code/smartos_code/Debug/Src/os_mbox.s.d | 77 --- .../code/smartos_code/Debug/Src/os_mem.s.d | 77 --- .../code/smartos_code/Debug/Src/os_mutex.s.d | 77 --- .../rtos/code/smartos_code/Debug/Src/os_q.s.d | 77 --- .../code/smartos_code/Debug/Src/os_sem.s.d | 77 --- .../code/smartos_code/Debug/Src/os_task.s.d | 77 --- .../code/smartos_code/Debug/Src/os_time.s.d | 77 --- .../code/smartos_code/Debug/Src/os_tmr.s.d | 77 --- .../code/smartos_code/Debug/Src/os_ucp.s.d | 76 --- .../rtos/code/smartos_code/Debug/Src/sem.s.d | 80 --- .../code/smartos_code/Debug/Src/subdir.mk | 95 --- .../code/smartos_code/Debug/Src/timer.s.d | 100 --- .../code/smartos_code/Debug/Src/ucos_ii.s.d | 1 - public/rtos/code/smartos_code/Debug/makefile | 43 -- .../rtos/code/smartos_code/Debug/objects.mk | 8 - .../rtos/code/smartos_code/Debug/sources.mk | 15 - .../rtos/code/smartos_code/Release/sources.mk | 15 - .../smartos_code/{Release => lib}/makefile | 0 .../smartos_code/{Release => lib}/objects.mk | 0 .../Debug => smartos_code/lib}/sources.mk | 0 .../smartos_code/{Release => lib}/subdir.mk | 0 .../rtos/code/spinlock_code/Src/spinlock.s.c | 392 ++++++++---- public/rtos/code/spinlock_code/inc/spinlock.h | 129 +++- .../rtos/code/spinlock_code/lib/libspinlock.a | Bin 0 -> 4498 bytes 63 files changed, 1484 insertions(+), 3156 deletions(-) delete mode 100644 public/rtos/code/hw_q_code/inc/osp_io.h create mode 100644 public/rtos/code/hw_q_code/lib/libhwque.a rename public/rtos/code/interrupt_code/{interrupt => }/Src/__ucps2_interrupt.s.asm (82%) create mode 100644 public/rtos/code/interrupt_code/Src/alg.s.c create mode 100644 public/rtos/code/interrupt_code/Src/inter_vector.s.c rename public/rtos/code/interrupt_code/{interrupt => }/inc/alg.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/csu.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/error.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/gs_que.h (100%) create mode 100644 public/rtos/code/interrupt_code/inc/inter_vector.h rename public/rtos/code/interrupt_code/{interrupt => }/inc/pet_ctrl.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/ucp_js_ctrl.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/ucp_param.h (100%) rename public/rtos/code/interrupt_code/{interrupt => }/inc/ucp_sfr_c.h (100%) delete mode 100644 public/rtos/code/interrupt_code/interrupt/.cproject delete mode 100644 public/rtos/code/interrupt_code/interrupt/.mapu delete mode 100644 public/rtos/code/interrupt_code/interrupt/.project delete mode 100644 public/rtos/code/interrupt_code/interrupt/.settings/org.eclipse.cdt.core.prefs delete mode 100644 public/rtos/code/interrupt_code/interrupt/Debug/Src/inter_vector.s.d delete mode 100644 public/rtos/code/interrupt_code/interrupt/Debug/Src/subdir.mk delete mode 100644 public/rtos/code/interrupt_code/interrupt/Debug/makefile delete mode 100644 public/rtos/code/interrupt_code/interrupt/Debug/objects.mk delete mode 100644 public/rtos/code/interrupt_code/interrupt/Src/inter_vector.s.c delete mode 100644 public/rtos/code/interrupt_code/interrupt/inc/inter_vector.h delete mode 100644 public/rtos/code/interrupt_code/interrupt/makefile.init create mode 100644 public/rtos/code/interrupt_code/lib/libinterrupt.a delete mode 100644 public/rtos/code/interrupt_code/libinterrupt.a delete mode 100644 public/rtos/code/interrupt_code/libsmartos.a delete mode 100644 public/rtos/code/smartos_code/Debug/Src/SmartOS.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/alg.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/func_lib_ape.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/inter_vector.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/mailbox.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_core.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_cpu_c.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_dbg_r.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_flag.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_mbox.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_mem.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_mutex.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_q.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_sem.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_task.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_time.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_tmr.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/os_ucp.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/sem.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/subdir.mk delete mode 100644 public/rtos/code/smartos_code/Debug/Src/timer.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/Src/ucos_ii.s.d delete mode 100644 public/rtos/code/smartos_code/Debug/makefile delete mode 100644 public/rtos/code/smartos_code/Debug/objects.mk delete mode 100644 public/rtos/code/smartos_code/Debug/sources.mk delete mode 100644 public/rtos/code/smartos_code/Release/sources.mk rename public/rtos/code/smartos_code/{Release => lib}/makefile (100%) rename public/rtos/code/smartos_code/{Release => lib}/objects.mk (100%) rename public/rtos/code/{interrupt_code/interrupt/Debug => smartos_code/lib}/sources.mk (100%) rename public/rtos/code/smartos_code/{Release => lib}/subdir.mk (100%) create mode 100644 public/rtos/code/spinlock_code/lib/libspinlock.a diff --git a/public/rtos/code/hw_q_code/Src/hwque.c b/public/rtos/code/hw_q_code/Src/hwque.c index 74883a5..31573d5 100644 --- a/public/rtos/code/hw_q_code/Src/hwque.c +++ b/public/rtos/code/hw_q_code/Src/hwque.c @@ -1,40 +1,90 @@ #include "ucps2-intrin.h" #include "hwque.h" -#include "osp_io.h" void hwq_debug(void * addr , uint32_t v); -#define hwq_do_write(a,v) __ucps2_store_ext_mem((void *)a, (uint32_t)v, f_W) -#define hwq_do_read(ptr) __ucps2_load_ext_mem_v((char*)ptr, f_W) +#define hwq_do_write(a,v) __ucps2_store_ext_mem((void *)(a), (uint32_t)v, f_W) +#define hwq_do_read(ptr) __ucps2_load_ext_mem_v((char*)(ptr), f_W) + +#define CPSM_QUE_BASE 0x04d50000 +#define JSSM_QUE_BASE 0x05f70000 + +#define CPSM_MEM_BASE 0x09300000ul + +#define JS_MEM_BASE 0x04d80000ul + +#define dire_in 0 +#define dire_out 1 + +int que_map_depth_array[16] = { + + 0x04d51014,0x04d51018,0x04d5101c,0x04d51020, + 0x04d51024,0x04d51028,0x04d5102c,0x04d51030, + + 0x05f71014,0x05f71018,0x05f7101c,0x05f71020, + 0x05f71024,0x05f71028,0x05f7102c,0x05f71030 + +}; + +int que_map_start_addr_array[16] ={ + + 0x09300000,0x09303F00,0x09307E00,0x0930BD00,0x0930FC00,0x09313B00,0x09317A00,0x931B900, + + 0x04d80000,0x04d83F00,0x04d87E00,0x04D8BD00,0x04D8FC00,0x04D93B00,0x04D97A00,0x04D9B900 +}; //#define HWQUE_HEADER_ADDR (0x931fc00 - 0x400) - +extern int int_default_val; hwq_debug_t *q_debug_info; int q_debug_enable = 0; uint32_t q_debug_addr = 0; -unsigned int out_failed_cnt; -unsigned int in_failed_cnt; -unsigned int out_success_cnt; -unsigned int in_success_cnt; -unsigned int cur_que_depth; +unsigned int out_failed_cnt[QUE_MAX_NR] = {0}; +unsigned int in_failed_cnt[QUE_MAX_NR] = {0}; +unsigned int out_success_cnt[QUE_MAX_NR] = {0}; +unsigned int in_success_cnt[QUE_MAX_NR] = {0}; +//unsigned int cur_que_depth[QUE_MAX_NR] = {0}; unsigned int bind_cpuid; +int g_coreid = 0; const uint32_t com_header_addr = (0x931fc00 -0x400); mpu_shm_obj *shm_head = NULL; +void hw_que_panic(int queid,int addr,int mode) +{ -int g_coreid = 0; + if(que_map_depth_array[queid] != addr) + { + if(mode == dire_in) + { + hwq_debug(&(q_debug_info->per_hwq[queid].in_que_depth_addr), addr); + } + else + { + hwq_debug(&(q_debug_info->per_hwq[queid].out_que_depth_addr), addr); + } + __ucps2_IntEn(f_Disable); + while(1); + + } + +} int smart_hq_init(int cpuid) { + shm_head = (mpu_shm_obj*)com_header_addr; - shm_head = (mpu_shm_obj*)com_header_addr; - g_coreid = cpuid; - return 0; + if((cpuid > 12)||(cpuid < 0)) + { + return -1; + } + g_coreid = cpuid; + + + return 0; } /************************************ @@ -43,41 +93,138 @@ int smart_hq_init(int cpuid) int smart_get_hq_vector(int cpuid,int queid) { - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - - if((cpuid >= 0)&&(cpuid < 12)) - { - return que_ptr->ape_vector_id; - } - else if(cpuid == 12) - { - return que_ptr->arm_vector_id; - } - return -1; -} + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + if((cpuid >= 0)&&(cpuid < 12)) + { + return que_ptr->ape_vector_id; + } + else if(cpuid == 12) + { + return que_ptr->arm_vector_id; + } + return -1; +} /*************** + 函数名称:smart_intr_in_que + 函数参数:queid 队列编号 + 函数参数:val 入队值 + 函数功能:硬件队列入队 + 函数使用注意1 : 当前函数只能在中断处理函数中调用 + 函数使用注意2 :当前多生产使用时需要外部加锁 ******************/ +int smart_intr_in_que(int queid,uint32_t val) +{ + uint32_t tp_val; + int ret; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + hw_que_panic(queid,que_ptr->hw_depth_reg,dire_in); + tp_val = hwq_do_read(que_ptr->hw_depth_reg); + if(((tp_val >> 16)&0xffff) > B_128_16BLCOKS) + { + hwq_do_write(que_ptr->hw_start_addr,val); + ++in_success_cnt[queid]; + ret = 0; + hwq_debug(&(q_debug_info->per_hwq[queid].in_success_cnt), in_success_cnt[queid]); + } + else + { + ++in_failed_cnt[queid]; + ret = -1; + hwq_debug(&(q_debug_info->per_hwq[queid].in_failed_cnt), in_failed_cnt[queid]); + } + + return ret; +} + +/*************** + 函数名称:smart_in_que + 函数参数:queid 队列编号 + 函数参数:val 入队值 + 函数功能:硬件队列入队 + 函数使用注意 :当前函数不能在中断处理函数中调用 + 函数使用注意 :多核并发使用时需要外部加锁保护 +******************/ + int smart_in_que(int queid,uint32_t val) { - uint32_t tp_val; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - tp_val = *(volatile uint32_t*)(que_ptr->hw_depth_reg); - if(((tp_val >> 16)&0xffff) > B_128_16BLCOKS) - { - *(volatile uint32_t*)(que_ptr->hw_start_addr) = val; - hwq_debug(&(q_debug_info->per_hwq[queid].in_success_cnt), ++in_success_cnt); - hwq_debug(&(q_debug_info->per_hwq[queid].cur_que_depth), *(volatile uint32_t*)que_ptr->hw_depth_reg); - return 0; - } - hwq_debug(&(q_debug_info->per_hwq[queid].in_failed_cnt), ++in_failed_cnt); - - return -1; + int ret = 0; + int int_state = __ucps2_readIntEn(); + if(int_state == 1) + { + __ucps2_IntEn(f_Disable); + ret = smart_intr_in_que(queid,val); + __ucps2_IntEn(f_Enable); + } + else + { + ret = smart_intr_in_que(queid,val); + } + return ret; } + +/********************************* +函数名称:smart_intr_out_que +函数参数:queid 队列编号 +函数参数:出队val 值 +函数功能:硬件队列出队 +函数使用注意 当前函数只能在中断处理函数中调用 + +********************************/ +int smart_intr_out_que(int queid,uint32_t *val) +{ + uint32_t tp_val; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + if(hwq_do_read(&que_ptr->cpuid) != g_coreid) + { + return -EMATCH; + } + hw_que_panic(queid,que_ptr->hw_depth_reg,dire_out); + tp_val = hwq_do_read(que_ptr->hw_depth_reg); + if((tp_val&0xffff) != 0) + { + ++out_success_cnt[queid]; + hwq_debug(&(q_debug_info->per_hwq[queid].out_success_cnt), out_success_cnt[queid]); + *val = hwq_do_read(que_ptr->hw_start_addr); + return 0; + } + ++out_failed_cnt[queid]; + hwq_debug(&(q_debug_info->per_hwq[queid].out_failed_cnt), out_failed_cnt[queid]); + + return -EQUEEMPTY; +} + +/********************** +函数名称:smart_out_que +函数参数:queid 队列编号 +输出参数:val +函数功能:队列出队获取当前出队值 +函数使用注意 : 当前函数不能在中断处理函数中使用 + +*********************/ + +int smart_out_que(int queid,uint32_t *val) +{ + int ret = 0; + int int_state = __ucps2_readIntEn(); + if(int_state == 1) + { + __ucps2_IntEn(f_Disable); + ret = smart_intr_out_que(queid,val); + __ucps2_IntEn(f_Enable); + } + else + { + ret = smart_intr_out_que(queid,val); + } + return ret; +} + + /********************* 函数名称:smart_que_is_full 函数参数:queid 队列编号 @@ -87,144 +234,138 @@ int smart_in_que(int queid,uint32_t val) int smart_que_is_full(int queid) { - uint32_t tp_val; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - tp_val = *(volatile uint32_t*)(que_ptr->hw_depth_reg); - if(((tp_val >> 16)&0xffff) <= B_128_16BLCOKS) - { - return 1; // que is full - } - return 0; // que is not full -} - -/********************* -函数名称:smart_out_que -函数参数:queid 队列编号 -输出参数:idx 获取当前队列的索引值 -函数功能:队列出队获取当前队列的索引值 - -*********************/ - -int smart_out_que(int queid,uint32_t *val) -{ - uint32_t tp_val; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - if(que_ptr->cpuid != g_coreid) - { - return -EMATCH; - } - tp_val = *(volatile uint32_t*)(que_ptr->hw_depth_reg); - hwq_debug(&(q_debug_info->per_hwq[queid].cur_que_depth), tp_val); - if((tp_val&0xffff) != 0) - { - hwq_debug(&(q_debug_info->per_hwq[queid].out_success_cnt), ++out_success_cnt); - *val = (*(volatile uint32_t*)(que_ptr->hw_start_addr)); - return 0; - } - hwq_debug(&(q_debug_info->per_hwq[queid].out_failed_cnt), ++out_failed_cnt); - return -EQUEEMPTY; + uint32_t tp_val; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + tp_val = hwq_do_read(que_ptr->hw_depth_reg); + if(((tp_val >> 16)&0xffff) == B_128_16BLCOKS) + { + return 1; // que is full + } + + return 0; // que is not full } int smart_que_is_empty(int queid) { - uint32_t tp_val; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - tp_val = *(volatile uint32_t*)(que_ptr->hw_depth_reg); - if((tp_val&0xffff) == 0) - { - return 1; // que is empty true - } - else - { - return 0; // que is not empty FALSE - } + uint32_t tp_val; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + tp_val = hwq_do_read(que_ptr->hw_depth_reg); + if((tp_val&0xffff) == 0) + { + return 1; // que is empty true + } + else + { + return 0; // que is not empty FALSE + } } int smart_get_que_info(int queid,int *dep,int *width,int *used,int *cpuid) { - uint32_t tmp; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - if(queid >= 0 && queid < 8) - { - *dep = shm_head->shm_type_s[CPSM_SM].que_depths - B_128_16BLCOKS; - *width = shm_head->shm_type_s[CPSM_SM].width_bits; - }else if(queid >=8 && queid < 16) - { - *dep = shm_head->shm_type_s[JSSM_SM].que_depths - B_128_16BLCOKS; - *width = shm_head->shm_type_s[JSSM_SM].width_bits; - } - *cpuid = que_ptr->cpuid; - tmp = *(volatile uint32_t*)(que_ptr->hw_depth_reg); - *used = (tmp&0xffff); + uint32_t tmp; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + if(queid >= 0 && queid < 8) + { + *dep = shm_head->shm_type_s[CPSM_SM].que_depths - B_128_16BLCOKS; + *width = shm_head->shm_type_s[CPSM_SM].width_bits; + }else if(queid >=8 && queid < 16) + { + *dep = shm_head->shm_type_s[JSSM_SM].que_depths - B_128_16BLCOKS; + *width = shm_head->shm_type_s[JSSM_SM].width_bits; + } + *cpuid = que_ptr->cpuid; + tmp = *(volatile uint32_t*)(que_ptr->hw_depth_reg); + *used = (tmp&0xffff); - - return 0; + return 0; } -void smart_enable_q_nempty(int queid) +static int test_bit(void *s,unsigned int index) { - volatile uint32_t *empty_reg; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - empty_reg = (volatile uint32_t*)(que_ptr->hw_base_reg+0x103c); - if(queid < 8) - { - *empty_reg |= 1<< (queid+8); - } - else if((queid >= 8)&&(queid < 16)) - { - *empty_reg |= 1<< ((queid -8)+8); - } - else if((queid >= 16)&&(queid < 24)) - { - *empty_reg |= 1<< ((queid -16)+8); - } - else if((queid >= 24)&&(queid < 32)) - { - *empty_reg |= 1<< ((queid - 24)+8); - } + unsigned char *f_bit = s; + f_bit += index >>3; + return ((*f_bit&(1 <<((index%8)))) != 0); +} + + +int smart_enable_q_nempty(int queid) +{ + volatile uint32_t *empty_reg; + int tmp_val = 0; + int ret = 0; + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + empty_reg = (volatile uint32_t*)(que_ptr->hw_base_reg+0x103c); + if(queid < 8) + { + *empty_reg |= 1<< (queid+8); + tmp_val = *empty_reg; + __ucps2_synch(0); + ret = !(test_bit(&tmp_val,(queid+8)) != 0); + } + else if((queid >= 8)&&(queid < 16)) + { + *empty_reg |= 1<< ((queid -8)+8); + tmp_val = *empty_reg; + __ucps2_synch(0); + ret = !(test_bit(&tmp_val,((queid -8)+8)) != 0); + } + else if((queid >= 16)&&(queid < 24)) + { + *empty_reg |= 1<< ((queid -16)+8); + tmp_val = *empty_reg; + __ucps2_synch(0); + ret = !(test_bit(&tmp_val,((queid -16)+8)) != 0); + } + else if((queid >= 24)&&(queid < 32)) + { + *empty_reg |= 1<< ((queid - 24)+8); + tmp_val = *empty_reg; + __ucps2_synch(0); + ret = !(test_bit(&tmp_val,((queid -24)+8)) != 0); + } + return ret; } void smart_disable_q_nempty(int queid) { volatile uint32_t *empty_reg; - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - empty_reg = (volatile uint32_t*)(que_ptr->hw_base_reg+0x103c); - if(queid < 8) - { - *empty_reg &= ~(1<< (queid+8)); - } - else if((queid >= 8)&&(queid < 16)) - { - *empty_reg &= ~(1<< ((queid -8)+8)); - }else if((queid >= 16)&&(queid < 24)) - { - *empty_reg &= ~(1<< ((queid -16)+8)); - }else if((queid >= 24)&&(queid < 32)) - { - *empty_reg &= ~(1<< ((queid -24)+8)); - } + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + empty_reg = (volatile uint32_t*)(que_ptr->hw_base_reg+0x103c); + if(queid < 8) + { + *empty_reg &= ~(1<< (queid+8)); + } + else if((queid >= 8)&&(queid < 16)) + { + *empty_reg &= ~(1<< ((queid -8)+8)); + }else if((queid >= 16)&&(queid < 24)) + { + *empty_reg &= ~(1<< ((queid -16)+8)); + }else if((queid >= 24)&&(queid < 32)) + { + *empty_reg &= ~(1<< ((queid -24)+8)); + } } int smart_que_bind(int cpuid,int queid) { - if((queid >15)||(queid < 0)) - { - return -EINVAL; - } - hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); - hwq_debug(&(q_debug_info->per_hwq[queid].bind_cpuid), cpuid); - if(que_ptr->cpuid == -1) - { - que_ptr->cpuid = cpuid; - return 0; - } - else - { - return -1; - } + if((queid >15)||(queid < 0)) + { + return -EINVAL; + } + hw_reg_desc_t * que_ptr = ((hw_reg_desc_t*)shm_head->v_map_queid[queid]); + if(que_ptr->cpuid == -1) + { + que_ptr->cpuid = cpuid; + return 0; + } + else + { + return -1; + } } /* @@ -232,48 +373,48 @@ int smart_que_bind(int cpuid,int queid) */ int smart_hq_debug_init(uint32_t debug_base_addr, uint32_t len_bytes) { - if(debug_base_addr <= 0x10000000) - { - return -1; - } - if (len_bytes < 192) - { - return -2; - } + if(debug_base_addr <= 0x10000000) + { + return -1; + } + if (len_bytes < 384) + { + return -2; + } - q_debug_enable = 1; - q_debug_addr = debug_base_addr; - q_debug_info = (hwq_debug_t *)q_debug_addr; + q_debug_enable = 1; + q_debug_addr = debug_base_addr; + q_debug_info = (hwq_debug_t *)q_debug_addr; - return 0; + return 0; } int smart_get_inque_ok_cnt(int queid) { - return q_debug_info->per_hwq[queid].in_success_cnt; + return in_success_cnt[queid]; } int smart_get_inque_failed_cnt(int queid) { - return q_debug_info->per_hwq[queid].in_failed_cnt; + return out_failed_cnt[queid]; } int smart_get_outque_ok_cnt(int queid) { - return q_debug_info->per_hwq[queid].out_success_cnt; + return out_success_cnt[queid]; } int smart_get_outque_failed_cnt(int queid) { - return q_debug_info->per_hwq[queid].out_failed_cnt; + return out_failed_cnt[queid]; } void hwq_debug(void * addr , uint32_t v) { - if(q_debug_enable == 1) - { - hwq_do_write(addr, v); - } + if(q_debug_enable == 1) + { + hwq_do_write(addr, v); + } } diff --git a/public/rtos/code/hw_q_code/inc/hwque.h b/public/rtos/code/hw_q_code/inc/hwque.h index 59f1cc4..6c80494 100644 --- a/public/rtos/code/hw_q_code/inc/hwque.h +++ b/public/rtos/code/hw_q_code/inc/hwque.h @@ -28,12 +28,14 @@ typedef unsigned long long uint64_t; #define NULL ((void*)0) +#define QUE_MAX_NR 16 #define HW_QUE_NR 8 #define QUE_NR 16 #define B_128_16BLCOKS 8 + #define B_256_32BLOCKS 32 #define BLOCKS_64 64 @@ -78,212 +80,214 @@ typedef struct mpu_shm{ typedef struct{ - unsigned int out_failed_cnt; - unsigned int in_failed_cnt; - unsigned int out_success_cnt; - unsigned int in_success_cnt; - unsigned int cur_que_depth; - unsigned int bind_cpuid; + unsigned int out_failed_cnt; + unsigned int in_failed_cnt; + unsigned int out_success_cnt; + unsigned int in_success_cnt; + unsigned int in_que_depth_addr; + unsigned int out_que_depth_addr; }hwq_db_info ; typedef struct{ - hwq_db_info per_hwq[HW_QUE_NR]; - + hwq_db_info per_hwq[QUE_MAX_NR]; + }hwq_debug_t; /* - 函数名称:smart_hq_init - 输入参数: cpuid - 返回类型: int - 返回值: 小于0 表示失败 - 返回值: 0 表示成功 - 函数功能: 硬件队列初始化 - + 函数名称:smart_hq_init + 输入参数: cpuid + 返回类型: int + 返回值: 小于0 表示失败 + 返回值:等于0 表示成功 + 函数功能:硬件队列初始化 */ extern int smart_hq_init(int cpuid); /* - 函数名称:smart_get_hq_vector - 输入参数: cpuid - 输入参数:queid - 返回类型: int - 返回值:小于等于0 表示失败 - 函数功能: 获取当前硬件队列中断号 + 函数名称:smart_get_hq_vector + 输入参数: cpuid + 输入参数:queid + 返回类型: int + 返回值:小于等于0 表示失败 + 函数功能:获取当前硬件队列中断号 */ extern int smart_get_hq_vector(int cpuid,int queid); -/* - 函数名称:smart_in_que - 输入参数: cpuid - 输入参数:val - 返回类型: int - 返回值: 非0 表示失败 - 返回值: 0 表示成功 - 函数功能: 硬件队列入队 +/******************** + + 函数名称:smart_in_que + 函数参数:queid 队列编号 + 函数参数:val 入队值 + 函数功能:硬件队列入队 + 函数使用注意点1: 多核生产者入队时需要加锁 + +******************/ -*/ extern int smart_in_que(int queid,uint32_t val); + /* - 函数名称:smart_que_is_full - 输入参数: queid - 返回类型:int - 返回值: 1 表示 true - 返回值: 0 表示 false - 说明:下一版本返回值会更改enum , - enum hwque_status smart_que_is_full(int queid); - 返回值只能选择 hwque_false 和hwque_true + 函数名称:smart_que_is_full + 输入参数: queid + 返回类型:int + 返回值: 1 表示 true + 返回值: 0 表示 false */ extern int smart_que_is_full(int queid); -/* - 函数名称:smart_out_que - 输入参数: queid - 输出参数: val - 返回类型:int - 返回值: 0 表示成功 - 返回值: 非0表示失败 - 函数功能:队列出队 - -*/ +/********************* + 函数名称:smart_out_que + 函数参数:queid 队列编号 + 输出参数:idx 获取当前队列的索引值 + 函数功能:队列出队获取当前队列的索引值 + +*********************/ extern int smart_out_que(int queid,uint32_t *val); /* - 函数名称:smart_que_is_empty - 输入参数: queid - 返回类型: int - 返回值: 1 表示true - 返回值: 0 表示false + 函数名称:smart_que_is_empty + 输入参数: queid + 返回类型: int + 返回值: 1 表示true + 返回值:0 表示false */ extern int smart_que_is_empty(int queid); /* - 函数名称:smart_get_que_info - 输入参数: queid - 输出参数:*dep - 输出参数: *width - 输出参数: *used - 输出参数:*cpuid - 返回类型: int - 返回值: 非0 表示失败 - 返回值: 0 表示成功 - + 函数名称:smart_get_que_info + 输入参数: queid + 输出参数 *dep + 输出参数: *width + 输出参数: *used + 输出参数: *cpuid + 返回类型: int + 返回值:0 表示成功,非0 表示失败 + */ extern int smart_get_que_info(int queid,int *dep,int *width,int *used,int *cpuid); /* - 函数名称:smart_enable_q_nempty - 输入参数: queid - 返回值: 无 +// 函数名称:smart_enable_q_nempty + 函数名称:smart_hq_nempty_int_enable + 输入参数: queid + 返回值:int + 函数功能:使能非空中断 */ -extern void smart_enable_q_nempty(int queid); +//extern void smart_enable_q_nempty(int queid); +//extern void smart_hq_nempty_int_enable(int queid); +extern int smart_enable_q_nempty(int queid); + /* - 函数名称:smart_disable_q_nempty - 输入参数: queid - 返回值: 无 - 函数功能:使能非空中断 - +// 函数名称:smart_disable_q_nempty + 函数名称:smart_hq_nempty_int_disable + 输入参数: queid + 返回值:int + 函数功能:去使能非空中断 + */ extern void smart_disable_q_nempty(int queid); +//extern void smart_hq_nempty_int_disable(int queid); + /* - 函数名称:smart_que_bind - 输入参数: queid - 输入参数;cpuid - 返回类型:int - 返回值 ; 非0 表示失败 - 返回值: 0 表示成功 - 函数功能:去使能非空中断 - + 函数名称:smart_que_bind + 输入参数: queid + 输入参数;cpuid + 返回类型:int + 返回值 : 0 表示返回成功,非0 表示返回失败 + + 函数功能:去使能非空中断 + */ extern int smart_que_bind(int cpuid,int queid); + /* - 函数名称:smart_hq_debug_init - 输入参数: debug_base_addr - 输入参数;len_bytes - 返回类型:int - 返回值 ; 非0 表示失败 - 返回值:0 表示成功 - 函数功能:调试初始化接口 + 函数名称:smart_hq_debug_init + 输入参数: debug_base_addr + 输入参数;len_bytes + 返回类型:int + 返回值:0 表示成功 + 函数功能:调试初始化接口 - 注意: - 通过地址与,长度指定相应的buf 数据空间,存放相应的中断调试信息。 - 这些调试信息已经格式化,地址由用户指定,len_bytes 不能小于sizeof(hwq_debug_t) - 数据格式化内容是 hwq_debug_t + 注意: + 通过地址与,长度指定相应的buf 数据空间,存放相应的中断调试信息 + 这些调试信息已经格式化,地址由用户指定,len_bytes 不能小于sizeof(hwq_debug_t) + 数据格式化结构是: hwq_debug_t + + 数据格式 example: + typedef struct{ + unsigned int out_failed_cnt; + unsigned int in_failed_cnt; + unsigned int out_success_cnt; + unsigned int in_success_cnt; + unsigned int cur_que_depth; + unsigned int bind_cpuid; + + }hwq_db_info ; + + typedef struct{ + hwq_db_info per_hwq[HW_QUE_NR]; + + }hwq_debug_t; - 数据格式 example: - typedef struct{ - unsigned int out_failed_cnt; - unsigned int in_failed_cnt; - unsigned int out_success_cnt; - unsigned int in_success_cnt; - unsigned int cur_que_depth; - unsigned int bind_cpuid; - - }hwq_db_info ; - - typedef struct{ - hwq_db_info per_hwq[HW_QUE_NR]; - - }hwq_debug_t; */ extern int smart_hq_debug_init( uint32_t debug_base_addr, uint32_t len_bytes); /* - 函数名称:smart_get_inque_ok_cnt - 输入参数: queid - 返回类型:int - 返回值 ; 小于等于0表示失败 - 函数功能:获取当前入队成功计数 + 函数名称:smart_get_inque_ok_cnt + 输入参数: queid + 返回类型:int + 返回值 : 小于等于0表示失败 + 函数功能:获取当前入队成功计数 */ extern int smart_get_inque_ok_cnt(int queid); /* - 函数名称:smart_get_inque_failed_cnt - 输入参数: queid - 返回类型:int - 返回值 ; 小于等于0表示失败 - 函数功能:获取当前入队失败计数 + 函数名称:smart_get_inque_failed_cnt + 输入参数: queid + 返回类型:int + 返回值 : 小于等于0表示失败 + 函数功能:获取当前入队失败计数 */ extern int smart_get_inque_failed_cnt(int queid); /* - 函数名称:smart_get_outque_ok_cnt - 输入参数: queid - 返回类型:int - 返回值 ; 小于等于0表示失败 - 函数功能:获取当前出队成功计数 + 函数名称:smart_get_outque_ok_cnt + 输入参数: queid + 返回类型:int + 返回值:小于等于0表示失败 + 函数功能:获取当前出队成功计数 */ extern int smart_get_outque_ok_cnt(int queid); /* - 函数名称:smart_get_outque_failed_cnt - 输入参数: queid - 返回类型:int - 返回值 ; 小于等于0表示失败 - 函数功能:获取当前出队失败计数 + 函数名称:smart_get_outque_failed_cnt + 输入参数: queid + 返回类型:int + 返回值: 0表示成功,非0表示失败 + 函数功能:获取当前出队失败计数 */ extern int smart_get_outque_failed_cnt(int queid); diff --git a/public/rtos/code/hw_q_code/inc/osp_io.h b/public/rtos/code/hw_q_code/inc/osp_io.h deleted file mode 100644 index 737f3f9..0000000 --- a/public/rtos/code/hw_q_code/inc/osp_io.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __OSP_IO_H__ -#define __OSP_IO_H__ - -extern int osp_atoi(char *str); -extern char * osp_strchr(const char *str, int ch); -extern int osp_strlen(const char * str); -extern int osp_strcmp(const char *source,const char *dest); -extern int osp_strncmp(const char *first,const char *last,int count); -extern unsigned long my_strnlen(const char *s, int count); -extern char * osp_itoa(int n, char * chBuffer); -extern char * osp_strcat(char * dest, const char * src); -extern char *osp_strcpy(char *strDest, const char *strSrc); -extern unsigned long osp_strtoul(const char *cp,char **endp,unsigned int base); -extern char * osp_strstr (register char *buf, register char *sub); -extern char* osp_strtok(char* string_org,const char* demial); -extern void *osp_memcpy(void *dst, const void *src, int len); -extern void *osp_memset (void *s,int c,int n); -extern int osp_printf(const char *fmt, ...); -/* -函数名称:print_init -函数参数:uart_id -函数功能:打印组件初始化 -*/ -extern int print_init(int uart_id); - -#endif diff --git a/public/rtos/code/hw_q_code/lib/libhwque.a b/public/rtos/code/hw_q_code/lib/libhwque.a new file mode 100644 index 0000000000000000000000000000000000000000..8752bd57760e713f701a8d95f7287c6bac814965 GIT binary patch literal 10002 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 literal 0 HcmV?d00001 diff --git a/public/rtos/code/interrupt_code/interrupt/Src/__ucps2_interrupt.s.asm b/public/rtos/code/interrupt_code/Src/__ucps2_interrupt.s.asm similarity index 82% rename from public/rtos/code/interrupt_code/interrupt/Src/__ucps2_interrupt.s.asm rename to public/rtos/code/interrupt_code/Src/__ucps2_interrupt.s.asm index 8b1e737..cf7ed93 100644 --- a/public/rtos/code/interrupt_code/interrupt/Src/__ucps2_interrupt.s.asm +++ b/public/rtos/code/interrupt_code/Src/__ucps2_interrupt.s.asm @@ -17,11 +17,7 @@ __ucps2_interrupt5: SEQ: IntEn (Disable); AGU:[ISP + -116] = R1; - /* - SCU: R1 = 0x04a8 (E); //test intcontex - SCU: R1 = 0x0008 (L); //test intcontex - AGU: R1 =[R1 +0x0]; //test intcontex - */ + AGU:[ISP + -120] = R2; AGU:[ISP + -124] = R3; AGU:[ISP + -128] = R4; @@ -70,20 +66,9 @@ __ucps2_interrupt5: //------------disable intflags----------------- -// SCU: R1 = %ucp_int_disable (L)(E)(U); -// SCU: R1 = %ucp_int_disable; -// SEQ: call R1; - /* - SCU:R10 = 0x4000(E); //test intcontex - SCU:R10 = 0x0010(L); //test intcontex - AGU: [R10 + 0x0] = R1; //test intcontex - */ - SCU:R1 = %isr_entry (L)(E)(U); - SCU:R1 = %isr_entry ; - SEQ:call R1; -// SCU: R1 = %ucp_int_enble (L)(E)(U); -// SCU: R1 = %ucp_int_enble; -// SEQ: call R1; + SCU:R1 = %isr_entry (L)(E)(U); + SCU:R1 = %isr_entry ; + SEQ:call R1; //---------- user's coding area end ---------------- @@ -99,7 +84,7 @@ __ucps2_reg_restore5: AGU:R31 = [IFP + -228]; AGU:R30 = [IFP + -224]; // AGU:IFP = [IFP + -220]; -// AGU:DFP = [IFP + -216]; +// AGU:DFP = [IFP + -216]; AGU:R25 = [IFP + -212]; AGU:R24 = [IFP + -208]; AGU:R23 = [IFP + -204]; diff --git a/public/rtos/code/interrupt_code/Src/alg.s.c b/public/rtos/code/interrupt_code/Src/alg.s.c new file mode 100644 index 0000000..6a4e6c1 --- /dev/null +++ b/public/rtos/code/interrupt_code/Src/alg.s.c @@ -0,0 +1,49 @@ +#include "alg.h" + + +typedef unsigned int uint32_t; +typedef unsigned short uint16_t; +typedef unsigned char uint8_t; + +static const char lsb_bitmap[] ={ + 0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, + 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0, +}; + +int find_lsb(uint32_t ui32) +{ + uint16_t usmsw = (uint16_t)(ui32 >> 16); + uint16_t uslsw = (uint16_t)(ui32 & 0xffff); + uint8_t ubyte; + if(uslsw) + { + ubyte = (uint8_t)(uslsw & 0xff); + if(ubyte) + { + return (lsb_bitmap[ubyte]); + } + else + { + return (lsb_bitmap[(uint8_t)(uslsw >> 8)] + 8 ); + } + } + else + { + ubyte = (uint8_t)(usmsw & 0xff); + if(ubyte) + { + return (lsb_bitmap[ubyte] + 16 ); + } + else + { + return (lsb_bitmap[(uint8_t)(usmsw >> 8)] + 24 ); + } + } +} + diff --git a/public/rtos/code/interrupt_code/Src/inter_vector.s.c b/public/rtos/code/interrupt_code/Src/inter_vector.s.c new file mode 100644 index 0000000..bd0493f --- /dev/null +++ b/public/rtos/code/interrupt_code/Src/inter_vector.s.c @@ -0,0 +1,465 @@ +#include "ucps2-intrin.h" +#include "inter_vector.h" +#include "csu.h" +#include "pet_ctrl.h" +#include "ucp_sfr_c.h" +#include "ucp_js_ctrl.h" +#include "ucp_param.h" +#include "gs_que.h" +#include "error.h" + +#include "alg.h" + +#define DEBUG_OFF 0 +#define bit_32 32 +#define bit_64 64 + +#define APEID_ADDR 0x931FFF0 +#define NULL ((void*)0) +#define INTR_NR 32 +#define DBG_ON 1 +#define MAX_IRQ_NUM 512 +#define do_write(a,v) __ucps2_store_ext_mem((void *)a, (uint32_t)v, f_W) +#define do_read(ptr) __ucps2_load_ext_mem_v((char*)ptr, f_W) +#define IRQ_TRACPOINT_SIZE 0x92c + + + + +typedef struct{ + int reg_vec_count; + int reg_vec_buf[INTR_NR]; + int irq_count[INTR_NR]; + irq_handler pfun[INTR_NR]; + +}vec_desc; + + +vec_desc inter_vec_val; +int val_cnt; +int irq_num_tatal_cnt; +uint32_t g_apeid; +uint32_t apcid_set[12] = {0,0,1,1,2,2,3,3,4,4,5,5}; +uint32_t mask_array[16] = {0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60}; +uint32_t apcid_ad_val[] = {0,64,128,192}; +uint32_t debug_enable = 0; +uint32_t debug_addr = 0; + +uint32_t reg_cnt = 0; + +uint32_t irq_check_cnt = 0; +uint32_t irq_clear_cnt = 0; +uint32_t cpuid_limit[12] = {1,0,1,0,1,0,1,0,1,0,1,0}; +//irq_num_info info; +uint32_t g_mask; + +irq_debug_t *debug_info; + + +uint32_t irq_cnt = 0; +uint32_t fun_cnt_s_c = 0; +uint32_t fun_cnt_e_c = 0; +uint32_t is_irq_context = 0; + +uint32_t cpuid_times = 0; +int val_cnt; +uint32_t global_int_cnt[512] = {0}; + + +void __ucps2_interrupt5(); + + +/************************************** + +******/ + +static int get_apcid() +{ + return apcid_set[g_apeid]; +} + +vec_desc *get_vec_desc() +{ + return &inter_vec_val; +} + + +#if DEBUG_OFF +#define irq_debug(add,b) (0) +#else +static void irq_debug(void * addr, uint32_t v) +{ + if(debug_enable == 1) + { + do_write(addr, v); + __ucps2_synch(0); + } +} +#endif + +static uint32_t get_int_status_reg(uint32_t vector,int apcid) +{ + int mask_val; + int bit_val; + int load_val; + mask_val = vector>>5; + bit_val = (vector)&(bit_32 -1); + if((apcid >= 0)&&(apcid < 4)) + { + load_val = do_read((SYSCFG_BASE_ADDR + 1248 + mask_array[mask_val] + apcid_ad_val[apcid])); + return load_val; + } + else if(apcid == 4) + { + load_val = do_read((PET_CTRL_BASE + 100*4 + mask_val*4 )); + return load_val; + } + else if(apcid == 5) + { + load_val = do_read((JECS_CTRL_BASE + 40*4 + mask_val*4 )); + return load_val; + } + return 0; +} + +static int irq_csu_clear_is_ok(int irq_num) +{ + if (0 ==(APC_CSU_ALLPENDEVENT0 & (1<<(irq_num & 31)))) + { + return 1; + } + + return 0; +} + + +void isr_entry() +{ + is_irq_context = 1; + ++irq_cnt; + vec_desc *vec_val = &inter_vec_val; + unsigned int val; + int k; + int irq_num_bit; + uint32_t sys_status; + uint32_t bit_val = 0; + g_mask = APC_CSU_INTMASKL; + APC_CSU_INTMASKL = 0; + __ucps2_synch(0); + irq_debug(&(debug_info->irq_cnt), irq_cnt); + irq_debug(&(debug_info->apc_csu_allpendevent0), APC_CSU_ALLPENDEVENT0); + +// val = APC_CSU_ALLPENDEVENT0 & APC_CSU_INTMASKL; + val = APC_CSU_ALLPENDEVENT0 & g_mask; + + while (val != 0) + { + bit_val = find_lsb(val); + for (k = 0; k < (vec_val->reg_vec_count); k++) + { + irq_num_bit = (vec_val->reg_vec_buf[k]) & (bit_32 - 1); + sys_status = get_int_status_reg(vec_val->reg_vec_buf[k], apcid_set[g_apeid]); + irq_debug(&(debug_info->irq_sys_status[vec_val->reg_vec_buf[k] >> 5]), sys_status); + if ((bit_val == irq_num_bit) && (sys_status & (1 << irq_num_bit))) + { + if(vec_val->pfun[k] != NULL) + { + fun_cnt_s_c++; + irq_debug(&(debug_info->fun_start_cnt_all), fun_cnt_s_c); + global_int_cnt[vec_val->reg_vec_buf[k]]++; + irq_debug(&(debug_info->fun_run_cnt[vec_val->reg_vec_buf[k]]),global_int_cnt[vec_val->reg_vec_buf[k]]); + irq_debug(&(debug_info->cur_irq_num),vec_val->reg_vec_buf[k]); + vec_val->pfun[k](); + __ucps2_synch(0); + APC_CSU_EVENTINTCLEAR = ((vec_val->reg_vec_buf[k]) & 31); + __ucps2_synch(0); + fun_cnt_e_c++; + irq_debug(&(debug_info->fun_end_cnt_all),fun_cnt_e_c); + } + } + } + val &= ~(1 << bit_val); + } + + APC_CSU_INTMASKL = g_mask; + __ucps2_synch(0); + is_irq_context = 0; + +} + + +/***************************************************** + +***************************************************/ + +int smart_irq_init(int cpuid) +{ + int i; + int32_t addr = (int32_t)__ucps2_interrupt5; + if((cpuid < 0)||(cpuid > 11)) + { + return -EINVAL; + } + g_apeid = cpuid; + for(i = 0; i < 32;i++) + { + inter_vec_val.pfun[i] = NULL; + } + __ucps2_IntAddr(addr); + __ucps2_IntEn(f_Enable); + + return 0; +} + + +int smart_get_cpuid() +{ + int apeid; + if(cpuid_times != 0) + { + return g_apeid; + } + else + { + g_apeid = *(volatile unsigned int*)APEID_ADDR; + __ucps2_synch(0); + cpuid_times = 1; + } + + return g_apeid; +} + +/* + +*/ +int smart_irq_request(uint32_t vector, irq_handler func) +{ + int mask_val; + int i= 0; + int bit_val; + int apcid; + int load_val; + int cpuid = g_apeid; + if(vector > FUN_IRQ_MAX_NUM - 1) + { + return -EINVAL; + } + if (is_irq_context) + { + return -EINVAL; + } + if((cpuid < 0)||(cpuid > 11)) + { + return -EINVAL; + } + __ucps2_IntEn(f_Disable); + for(i = 0; i < inter_vec_val.reg_vec_count;i++) + { + if(vector == inter_vec_val.reg_vec_buf[i]) + { + return -EREREG; + } + } + mask_val = vector>>5; + bit_val = (vector)&(bit_32 -1); + apcid = apcid_set[cpuid]; + + if(apcid ==4) + { + load_val = do_read((PET_CTRL_BASE + 280 + mask_val*4 )); + load_val |= (1<irq_sys_mask[mask_val]), load_val); + irq_debug(&(debug_info->reg_irq_val[reg_cnt]), vector); + irq_debug(&(debug_info->reg_irq_cnt), reg_cnt); + irq_debug(&(debug_info->reg_irq_cpu_id), cpuid); + APC_CSU_INTMASKL |= (1 << bit_val); + __ucps2_synch(0); + inter_vec_val.reg_vec_buf[inter_vec_val.reg_vec_count] = vector; + inter_vec_val.pfun[inter_vec_val.reg_vec_count] = func; + inter_vec_val.reg_vec_count++; + __ucps2_IntEn(f_Enable); + + return 0; + +} + + +int smart_irq_enable(uint32_t vector) +{ + int mask_val; + int bit_val; + int apcid; + int load_val; + int cpuid = g_apeid; + + if(vector > FUN_IRQ_MAX_NUM - 1) + { + return -EINVAL; + } + mask_val = vector>>5; + bit_val = (vector)&(bit_32 -1); + apcid = apcid_set[cpuid]; + __ucps2_IntEn(f_Disable); + if(apcid ==4) + { + load_val = do_read((PET_CTRL_BASE + 280 + mask_val*4 )); + load_val |= (1< FUN_IRQ_MAX_NUM - 1) + { + return -EINVAL; + } + mask_val = vector>>5; + bit_val = (vector)&(bit_32 -1); + apcid = apcid_set[cpuid]; + __ucps2_IntEn(f_Disable); + if(apcid ==4) + { + load_val = do_read((PET_CTRL_BASE + 70*4 + mask_val*4 )); + load_val &= ~(1< (MAX_IRQ_NUM-1)) + { + return -EINVAL; + } + + return global_int_cnt[irqnum]; + + return 0; + +} + + + + diff --git a/public/rtos/code/interrupt_code/interrupt/inc/alg.h b/public/rtos/code/interrupt_code/inc/alg.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/alg.h rename to public/rtos/code/interrupt_code/inc/alg.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/csu.h b/public/rtos/code/interrupt_code/inc/csu.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/csu.h rename to public/rtos/code/interrupt_code/inc/csu.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/error.h b/public/rtos/code/interrupt_code/inc/error.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/error.h rename to public/rtos/code/interrupt_code/inc/error.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/gs_que.h b/public/rtos/code/interrupt_code/inc/gs_que.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/gs_que.h rename to public/rtos/code/interrupt_code/inc/gs_que.h diff --git a/public/rtos/code/interrupt_code/inc/inter_vector.h b/public/rtos/code/interrupt_code/inc/inter_vector.h new file mode 100644 index 0000000..93ba5c3 --- /dev/null +++ b/public/rtos/code/interrupt_code/inc/inter_vector.h @@ -0,0 +1,150 @@ +#ifndef __INTER_MSG_REG_H__ +#define __INTER_MSG_REG_H__ + + +#define FUN_IRQ_MAX_NUM 512 +#define IRQ_MAX_NUM 32 +#define IRQ_SYS_MASK_NUM 16 + + +typedef unsigned int uint32_t; +typedef unsigned int UINT32; + +typedef void (*irq_handler)(); + +typedef enum +{ + all_irq, + fun_s, + fun_e, +// clear_cnt_error, +// irq_check_error + +}irq_cnt_type_t; + +typedef unsigned int uint32_t; +typedef unsigned short uint16_t; +typedef unsigned char uint8_t; +typedef signed int int32_t; + + + +typedef struct { + + uint32_t reg_irq_cnt; //0x00 + uint32_t reg_irq_val[IRQ_MAX_NUM]; //0x04-0x80 + + uint32_t reg_irq_cpu_id; //0x84 + + uint32_t irq_cnt; //0x88 + + uint32_t fun_start_cnt_all; //0x8c + uint32_t fun_end_cnt_all; //0x90 + uint32_t cur_irq_num; //0x94 + uint32_t fun_run_cnt[FUN_IRQ_MAX_NUM]; //0x98-0x894 + +// uint32_t last_irq_num; //0x8a4 + + uint32_t irq_sys_mask[IRQ_SYS_MASK_NUM]; //0x898 -0x8d4 + uint32_t irq_sys_status[IRQ_SYS_MASK_NUM]; //0x8d4 -0x914 + uint32_t apc_csu_allpendevent0; //0x918 + uint32_t apc_csu_intmaskl; //0x91c + + +}irq_debug_t; + + +/* + 函数名称:smart_irq_request + 输入参数: vector + 输入参数:func + 返回类型: int + 返回值: 小于0 表示失败 + 返回值: 0 表示成功 + 函数功能: 中断注册接口 +*/ +extern int smart_irq_request(uint32_t vector,irq_handler func); + +/* + 函数名称:smart_irq_enable + 输入参数: vector + 返回类型: int + 返回值: 小于0 表示失败 + 返回值: 0 表示成功 + 函数功能: 中断使能接口 +*/ + +extern int smart_irq_enable(uint32_t vector); + +/* + 函数名称:smart_irq_disable + 输入参数: vector + 返回类型: int + 返回值: 小于0 表示失败 + 返回值: 0 表示成功 + 函数功能: 中断去使能接口 +*/ + +extern int smart_irq_disable(uint32_t vector); + +/* + 函数名称:smart_irq_debug_init + 输入参数: debug_base_addr + 输入参数:len_bytes + 返回类型: int + 返回值: 小于0 表示失败 + 返回值: 0 表示成功 + 函数功能: 中断调试接口, + 注意: + 通过地址与,长度指定相应的buf 数据空间,存放相应的中断调试信息。 + 这些调试信息已经格式化,地址由用户指定,len_bytes 不能小于sizeof(irq_debug_t) + 数据格式化内容是 irq_debug_t +*/ + +extern int smart_irq_debug_init(uint32_t debug_base_addr, uint32_t len_bytes); + +/* + 函数名称:smart_irq_get_type_cnt + 输入参数: num_type + 返回类型: int + 返回值: 0 表示当前type 类型计数为0 + 返回值: 非0 表示当前type 类型有计数 + 函数功能: 获取某种中断计数 +*/ + +extern uint32_t smart_irq_get_type_cnt(irq_cnt_type_t num_type); + +/* + 函数名称:smart_irq_get_run_cnt + 输入参数: irq_num:中断号 + 返回类型: int + 返回值: 小于0 表示获取失败。输入参数有问题 + 返回值: 为0 表示相应中断没有触发 + 返回值: 非0 表示中断产生的次数 + 函数功能:获取相应中断号的中断计数 +*/ + +extern int smart_irq_get_run_cnt(uint32_t irqnum); + +/* + 函数名称:smart_get_cpuid + 输入参数: 无 + 返回类型: int + 返回值: 当前的cpuid 号 + 函数功能:获取当前核cpuid 号 +*/ + +extern int smart_get_cpuid(); + +/* + 函数名称:smart_irq_init + 输入参数: cpuid + 返回类型: int + 返回值: 非0 初始化失败 + 函数功能:中断初始化 +*/ + +extern int smart_irq_init(int cpuid); + + +#endif diff --git a/public/rtos/code/interrupt_code/interrupt/inc/pet_ctrl.h b/public/rtos/code/interrupt_code/inc/pet_ctrl.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/pet_ctrl.h rename to public/rtos/code/interrupt_code/inc/pet_ctrl.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/ucp_js_ctrl.h b/public/rtos/code/interrupt_code/inc/ucp_js_ctrl.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/ucp_js_ctrl.h rename to public/rtos/code/interrupt_code/inc/ucp_js_ctrl.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/ucp_param.h b/public/rtos/code/interrupt_code/inc/ucp_param.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/ucp_param.h rename to public/rtos/code/interrupt_code/inc/ucp_param.h diff --git a/public/rtos/code/interrupt_code/interrupt/inc/ucp_sfr_c.h b/public/rtos/code/interrupt_code/inc/ucp_sfr_c.h similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/inc/ucp_sfr_c.h rename to public/rtos/code/interrupt_code/inc/ucp_sfr_c.h diff --git a/public/rtos/code/interrupt_code/interrupt/.cproject b/public/rtos/code/interrupt_code/interrupt/.cproject deleted file mode 100644 index 4901023..0000000 --- a/public/rtos/code/interrupt_code/interrupt/.cproject +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/rtos/code/interrupt_code/interrupt/.mapu b/public/rtos/code/interrupt_code/interrupt/.mapu deleted file mode 100644 index 994fb40..0000000 --- a/public/rtos/code/interrupt_code/interrupt/.mapu +++ /dev/null @@ -1,8 +0,0 @@ -{ - "project": { - "incList": [ - "../inc" - ], - "libList": [] - } -} \ No newline at end of file diff --git a/public/rtos/code/interrupt_code/interrupt/.project b/public/rtos/code/interrupt_code/interrupt/.project deleted file mode 100644 index 680bef8..0000000 --- a/public/rtos/code/interrupt_code/interrupt/.project +++ /dev/null @@ -1,27 +0,0 @@ - - - interrupt - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - com.smartlogic.mapu.build.staticlibrary.libraryNature - - diff --git a/public/rtos/code/interrupt_code/interrupt/.settings/org.eclipse.cdt.core.prefs b/public/rtos/code/interrupt_code/interrupt/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index 4e106a3..0000000 --- a/public/rtos/code/interrupt_code/interrupt/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -environment/project/com.smartlogic.mapu.build.ucp2.staticlib.debug.1890016445/append=true -environment/project/com.smartlogic.mapu.build.ucp2.staticlib.debug.1890016445/appendContributed=true -environment/project/com.smartlogic.mapu.build.ucp2.staticlib.release.300765673/append=true -environment/project/com.smartlogic.mapu.build.ucp2.staticlib.release.300765673/appendContributed=true diff --git a/public/rtos/code/interrupt_code/interrupt/Debug/Src/inter_vector.s.d b/public/rtos/code/interrupt_code/interrupt/Debug/Src/inter_vector.s.d deleted file mode 100644 index 8afff9e..0000000 --- a/public/rtos/code/interrupt_code/interrupt/Debug/Src/inter_vector.s.d +++ /dev/null @@ -1,47 +0,0 @@ -Src/inter_vector.s.o: ../Src/inter_vector.s.c \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/inter_vector.h ../inc/csu.h ../inc/pet_ctrl.h \ - ../inc/ucp_sfr_c.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h \ - ../inc/ucp_param.h ../inc/ucp_js_ctrl.h ../inc/dw_apb_timers.h \ - ../inc/gs_que.h ../inc/error.h - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/inter_vector.h: - -../inc/csu.h: - -../inc/pet_ctrl.h: - -../inc/ucp_sfr_c.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h: - -../inc/ucp_param.h: - -../inc/ucp_js_ctrl.h: - -../inc/dw_apb_timers.h: - -../inc/gs_que.h: - -../inc/error.h: diff --git a/public/rtos/code/interrupt_code/interrupt/Debug/Src/subdir.mk b/public/rtos/code/interrupt_code/interrupt/Debug/Src/subdir.mk deleted file mode 100644 index 2b53d3c..0000000 --- a/public/rtos/code/interrupt_code/interrupt/Debug/Src/subdir.mk +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -ASM_SRCS += \ -../Src/__ucps2_interrupt.s.asm - -C_SRCS += \ -../Src/inter_vector.s.c - -OBJS += \ -./Src/__ucps2_interrupt.s.o \ -./Src/inter_vector.s.o - -C_DEPS += \ -./Src/inter_vector.s.d - - -# Each subdirectory must supply rules for building sources it contributes -Src/__ucps2_interrupt.s.o: ../Src/__ucps2_interrupt.s.asm - @echo 'Building file: $<' - @echo 'Invoking: llvm-mc Assembler' - $(MaPU_TC_HOME)/bin/ucp2/llvm-mc -arch=ucps2 -g -I../inc -filetype=obj -o "$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - -Src/%.o: ../Src/%.c - @echo 'Building file: $<' - @echo 'Invoking: Clang' - /home/ds5/ape/IDE_wang/toolchain/bin/ucp2/clang --target=ucps2 -I../inc -I/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib -I/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm -O0 -g -Wno-constant-conversion -nostdlibinc -MMD -MP -o "$@" -c "$<" - @echo 'Finished building: $<' - @echo ' ' - - diff --git a/public/rtos/code/interrupt_code/interrupt/Debug/makefile b/public/rtos/code/interrupt_code/interrupt/Debug/makefile deleted file mode 100644 index 6600ba6..0000000 --- a/public/rtos/code/interrupt_code/interrupt/Debug/makefile +++ /dev/null @@ -1,43 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - --include ../makefile.init - -RM := find . -path './build' -prune -o -print -a -type f -not -name '*.mk' -a -not -name '*.ld' -a -not -name 'makefile' -a -not -name 'genhex.sh' -delete & rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include Src/subdir.mk --include subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: libinterrupt_get32.a - -# Tool invocations -libinterrupt_get32.a: $(OBJS) - @echo 'Building target: $@' - @echo 'Invoking: GNU archiver' - ar rcs "libinterrupt_get32.a" $(USER_OBJS) $(OBJS) $(LIBS) - @echo 'Finished building target: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) $(LIB)$(OBJS)$(C_DEPS) libinterrupt_get32.a - -@echo ' ' - -.PHONY: all clean dependents - --include ../makefile.targets diff --git a/public/rtos/code/interrupt_code/interrupt/Debug/objects.mk b/public/rtos/code/interrupt_code/interrupt/Debug/objects.mk deleted file mode 100644 index 742c2da..0000000 --- a/public/rtos/code/interrupt_code/interrupt/Debug/objects.mk +++ /dev/null @@ -1,8 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -USER_OBJS := - -LIBS := - diff --git a/public/rtos/code/interrupt_code/interrupt/Src/inter_vector.s.c b/public/rtos/code/interrupt_code/interrupt/Src/inter_vector.s.c deleted file mode 100644 index caf473b..0000000 --- a/public/rtos/code/interrupt_code/interrupt/Src/inter_vector.s.c +++ /dev/null @@ -1,596 +0,0 @@ -#include "ucps2-intrin.h" -#include "inter_vector.h" -#include "csu.h" -#include "pet_ctrl.h" -#include "ucp_sfr_c.h" -#include "ucp_js_ctrl.h" -#include "ucp_param.h" -#include "gs_que.h" -#include "error.h" - -#include "alg.h" - -#define DEBUG_OFF 0 -#define bit_32 32 -#define bit_64 64 - -#define APEID_ADDR 0x931FFF0 -#define NULL ((void*)0) -#define INTR_NR 32 -#define DBG_ON 1 -#define MAX_IRQ_NUM 512 -#define do_write(a,v) __ucps2_store_ext_mem((void *)a, (uint32_t)v, f_W) -#define do_read(ptr) __ucps2_load_ext_mem_v((char*)ptr, f_W) -#define IRQ_TRACPOINT_SIZE 0x92c - - -/*typedef struct{ - int irq_num[MAX_IRQ_NUM]; - int irq_num_tatal; -}irq_num_info;*/ - -typedef struct{ - int reg_vec_count; - int reg_vec_buf[INTR_NR]; - int irq_count[INTR_NR]; - irq_handler pfun[INTR_NR]; - -}vec_desc; - - -vec_desc inter_vec_val; -int val_cnt; -int irq_num_tatal_cnt; -uint32_t g_apeid; -uint32_t apcid_set[12] = {0,0,1,1,2,2,3,3,4,4,5,5}; -uint32_t mask_array[16] = {0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60}; -uint32_t apcid_ad_val[] = {0,64,128,192}; -uint32_t debug_enable = 0; -uint32_t debug_addr = 0; - -uint32_t reg_cnt = 0; - -uint32_t irq_check_cnt = 0; -uint32_t irq_clear_cnt = 0; -uint32_t cpuid_limit[12] = {1,0,1,0,1,0,1,0,1,0,1,0}; -//irq_num_info info; -uint32_t g_mask; - -irq_debug_t *debug_info; - -irq_handler irq_func[MAX_IRQ_NUM] = {0}; -uint32_t irq_func_call_num[MAX_IRQ_NUM] = {0}; -uint32_t irq_cnt = 0; -uint32_t fun_cnt_s_c = 0; -uint32_t fun_cnt_e_c = 0; -uint32_t is_irq_context = 0; - -uint32_t cpuid_times = 0; -int val_cnt; -uint32_t global_int_cnt[512] = {0}; - - -void __ucps2_interrupt5(); - - -/****************************************************************************** -******/ - -static int get_apcid() -{ - return apcid_set[g_apeid]; -} - -vec_desc *get_vec_desc() -{ - return &inter_vec_val; -} - -static void clear_csu_apcirq(int vector) -{ - APC_CSU_EVENTINTCLEAR = vector & 31; - __ucps2_synch(0); -} - -#if DEBUG_OFF -#define irq_debug(add,b) (0) -#else -static void irq_debug(void * addr, uint32_t v) -{ - if(debug_enable == 1) - { - do_write(addr, v); -// __ucps2_synch(0); - } -} -#endif - -static uint32_t get_int_status_reg(uint32_t vector,int apcid) -{ - int mask_val; - int bit_val; - int load_val; - mask_val = vector>>5; - bit_val = (vector)&(bit_32 -1); - if((apcid >= 0)&&(apcid < 4)) - { - load_val = do_read((SYSCFG_BASE_ADDR + 1248 + mask_array[mask_val] + apcid_ad_val[apcid])); - return load_val; - } - else if(apcid == 4) - { - load_val = do_read((PET_CTRL_BASE + 100*4 + mask_val*4 )); - return load_val; - } - else if(apcid == 5) - { - load_val = do_read((JECS_CTRL_BASE + 40*4 + mask_val*4 )); - return load_val; - } - return 0; -} - -static int irq_csu_clear_is_ok(int irq_num) -{ - if (0 ==(APC_CSU_ALLPENDEVENT0 & (1<<(irq_num & 31)))) - { - return 1; - } - - return 0; - -} - -static int get_irq_num_from_csu_reg(void) -{ - int apcid = get_apcid(); - vec_desc *vec_val = get_vec_desc(); - unsigned int val; - int k; - //int j; - //int z = 0; - //int irq_num, - int irq_num_bit; - uint32_t sys_status; - uint32_t bit_val = 0; - - //p_info->irq_num_tatal = 0; - - irq_debug(&(debug_info->apc_csu_allpendevent0), APC_CSU_ALLPENDEVENT0); - irq_debug(&(debug_info->apc_csu_intmaskl), g_mask); -// irq_debug(&(debug_info->event_mask_l), APC_CSU_EVENTMASKL); - - val = APC_CSU_ALLPENDEVENT0 & g_mask; -// val = APC_CSU_ALLPENDEVENT0 & APC_CSU_INTMASKL; - - while (val != 0) - { - bit_val = find_lsb(val); - for (k = 0; k < (vec_val->reg_vec_count); k++) - { - irq_num_bit = (vec_val->reg_vec_buf[k]) & (bit_32 - 1); - sys_status = get_int_status_reg(vec_val->reg_vec_buf[k], apcid); - - irq_debug(&(debug_info->irq_sys_status[vec_val->reg_vec_buf[k] >> 5]), sys_status); - - if ((bit_val == irq_num_bit) && (sys_status & (1 << irq_num_bit))) - { - if(vec_val->pfun[k] != NULL) - { - fun_cnt_s_c++; - irq_debug(&(debug_info->fun_start_cnt_all), fun_cnt_s_c); - -// vec_val->irq_count[k]++; -// irq_debug(&(debug_info->fun_run_cnt[vec_val->irq_count[k]]),vec_val->irq_count[k]); - global_int_cnt[vec_val->reg_vec_buf[k]]++; - irq_debug(&(debug_info->fun_run_cnt[vec_val->reg_vec_buf[k]]),global_int_cnt[vec_val->reg_vec_buf[k]]); - vec_val->pfun[k](); - __ucps2_synch(0); - clear_csu_apcirq(vec_val->reg_vec_buf[k]); - fun_cnt_e_c++; - irq_debug(&(debug_info->fun_end_cnt_all),fun_cnt_e_c); - } - - - } - } - - val &= ~(1 << bit_val); - } - - return 0; -} - - -static int irq_is_registered(int irq_num) -{ - if ((0 == irq_func[irq_num]) ) - { - return 0; - } - - return 1; -} - - - -static void clear_mask(void) -{ - g_mask = APC_CSU_INTMASKL; - APC_CSU_INTMASKL = 0; - __ucps2_synch(0); -} - -static void restore_mask(void) -{ - APC_CSU_INTMASKL = g_mask; - __ucps2_synch(0); -} - -/* -void isr_entry() -{ - is_irq_context = 1; - - ++irq_cnt; - irq_debug(&(debug_info->irq_cnt), irq_cnt); - clear_mask(); - get_irq_num_from_csu_reg(); - restore_mask(); - is_irq_context = 0; -} -*/ - - -void isr_entry() -{ - is_irq_context = 1; - ++irq_cnt; -// int apcid = apcid_set[g_apeid]; - vec_desc *vec_val = &inter_vec_val; - unsigned int val; - int k; - int irq_num_bit; - uint32_t sys_status; - uint32_t bit_val = 0; - g_mask = APC_CSU_INTMASKL; - APC_CSU_INTMASKL = 0; - __ucps2_synch(0); -// do_write(0xb7fc0100,irq_cnt); - irq_debug(&(debug_info->irq_cnt), irq_cnt); - irq_debug(&(debug_info->apc_csu_allpendevent0), APC_CSU_ALLPENDEVENT0); - -// val = APC_CSU_ALLPENDEVENT0 & APC_CSU_INTMASKL; - val = APC_CSU_ALLPENDEVENT0 & g_mask; - - while (val != 0) - { - bit_val = find_lsb(val); - for (k = 0; k < (vec_val->reg_vec_count); k++) - { - irq_num_bit = (vec_val->reg_vec_buf[k]) & (bit_32 - 1); - sys_status = get_int_status_reg(vec_val->reg_vec_buf[k], apcid_set[g_apeid]); - irq_debug(&(debug_info->irq_sys_status[vec_val->reg_vec_buf[k] >> 5]), sys_status); - if ((bit_val == irq_num_bit) && (sys_status & (1 << irq_num_bit))) - { - if(vec_val->pfun[k] != NULL) - { - fun_cnt_s_c++; - irq_debug(&(debug_info->fun_start_cnt_all), fun_cnt_s_c); -// vec_val->irq_count[k]++; - global_int_cnt[vec_val->reg_vec_buf[k]]++; - irq_debug(&(debug_info->fun_run_cnt[vec_val->reg_vec_buf[k]]),global_int_cnt[vec_val->reg_vec_buf[k]]); - irq_debug(&(debug_info->cur_irq_num),vec_val->reg_vec_buf[k]); - vec_val->pfun[k](); - __ucps2_synch(0); - APC_CSU_EVENTINTCLEAR = ((vec_val->reg_vec_buf[k]) & 31); - __ucps2_synch(0); - fun_cnt_e_c++; - irq_debug(&(debug_info->fun_end_cnt_all),fun_cnt_e_c); - } - } - } - val &= ~(1 << bit_val); - } - APC_CSU_INTMASKL = g_mask; - __ucps2_synch(0); - is_irq_context = 0; - -} - - -/****************************************************************************** -******/ - -int smart_irq_init(int cpuid) -{ - int i; - int32_t addr = (int32_t)__ucps2_interrupt5; - if((cpuid < 0)||(cpuid > 11)) - { - return -EINVAL; - } - g_apeid = cpuid; - for(i = 0; i < 32;i++) - { - inter_vec_val.pfun[i] = NULL; - } - __ucps2_IntAddr(addr); - __ucps2_IntEn(f_Enable); - return 0; -} - - -int smart_get_cpuid() -{ - int apeid; - if(cpuid_times != 0) - { - return g_apeid; - } - else - { - g_apeid = *(volatile unsigned int*)APEID_ADDR; - cpuid_times = 1; - } - return g_apeid; -} - -/* - -*/ -int smart_irq_request(uint32_t vector, irq_handler func) -{ - int mask_val; - int i= 0; - int bit_val; - int apcid; - int load_val; - int cpuid = g_apeid; - if(vector > FUN_IRQ_MAX_NUM - 1) - { - return -EINVAL; - } - if (is_irq_context) - { - return -EINVAL; - } - if((cpuid < 0)||(cpuid > 11)) - { - return -EINVAL; - } - __ucps2_IntEn(f_Disable); - for(i = 0; i < inter_vec_val.reg_vec_count;i++) - { - if(vector == inter_vec_val.reg_vec_buf[i]) - { - return -EREREG; - } - } - mask_val = vector>>5; - bit_val = (vector)&(bit_32 -1); - apcid = apcid_set[cpuid]; - - if(apcid ==4) - { - load_val = do_read((PET_CTRL_BASE + 280 + mask_val*4 )); - load_val |= (1<irq_sys_mask[mask_val]), load_val); - irq_debug(&(debug_info->reg_irq_val[reg_cnt]), vector); - irq_debug(&(debug_info->reg_irq_cnt), reg_cnt); - irq_debug(&(debug_info->reg_irq_cpu_id), cpuid); - APC_CSU_INTMASKL |= (1 << bit_val); - __ucps2_synch(0); - inter_vec_val.reg_vec_buf[inter_vec_val.reg_vec_count] = vector; - inter_vec_val.pfun[inter_vec_val.reg_vec_count] = func; - inter_vec_val.reg_vec_count++; - __ucps2_IntEn(f_Enable); - return 0; - -} - - -int smart_irq_enable(uint32_t vector) -{ - int mask_val; - int bit_val; - int apcid; - int load_val; - int cpuid = g_apeid; -/* - if ((vector >= (MAX_IRQ_NUM-1)) || !irq_is_registered(vector)) - { - return -EINVAL; - }*/ - if(vector > FUN_IRQ_MAX_NUM - 1) - { - return -EINVAL; - } - mask_val = vector>>5; - bit_val = (vector)&(bit_32 -1); - apcid = apcid_set[cpuid]; - __ucps2_IntEn(f_Disable); - if(apcid ==4) - { - load_val = do_read((PET_CTRL_BASE + 280 + mask_val*4 )); - load_val |= (1<= (MAX_IRQ_NUM-1)) || !irq_is_registered(vector)) - { - return -1; - }*/ - if(vector > FUN_IRQ_MAX_NUM - 1) - { - return -EINVAL; - } - mask_val = vector>>5; - bit_val = (vector)&(bit_32 -1); - apcid = apcid_set[cpuid]; - __ucps2_IntEn(f_Disable); - if(apcid ==4) - { - load_val = do_read((PET_CTRL_BASE + 70*4 + mask_val*4 )); - load_val &= ~(1<= (MAX_IRQ_NUM-1)) - { - return -EINVAL; - } - */ - if (irqnum > (MAX_IRQ_NUM-1)) - { - return -EINVAL; - } - /* - vec_desc * vec_val = get_vec_desc(); - for(i = 0; i < vec_val->reg_vec_count;i++) - { - if(irqnum == vec_val->reg_vec_buf[i]) - { - break; - } - } - if(i != vec_val->reg_vec_count) - { - return vec_val->irq_count[i]; - - } - */ - return global_int_cnt[irqnum]; - return 0; - -} - - - - diff --git a/public/rtos/code/interrupt_code/interrupt/inc/inter_vector.h b/public/rtos/code/interrupt_code/interrupt/inc/inter_vector.h deleted file mode 100644 index 8026396..0000000 --- a/public/rtos/code/interrupt_code/interrupt/inc/inter_vector.h +++ /dev/null @@ -1,150 +0,0 @@ -#ifndef __INTER_MSG_REG_H__ -#define __INTER_MSG_REG_H__ - - -#define FUN_IRQ_MAX_NUM 512 -#define IRQ_MAX_NUM 32 -#define IRQ_SYS_MASK_NUM 16 - - -typedef unsigned int uint32_t; -typedef unsigned int UINT32; - -typedef void (*irq_handler)(); - -typedef enum -{ - all_irq, - fun_s, - fun_e, -// clear_cnt_error, -// irq_check_error - -}irq_cnt_type_t; - -typedef unsigned int uint32_t; -typedef unsigned short uint16_t; -typedef unsigned char uint8_t; -typedef signed int int32_t; - - - -typedef struct { - - uint32_t reg_irq_cnt; //0x00 - uint32_t reg_irq_val[IRQ_MAX_NUM]; //0x04-0x80 - - uint32_t reg_irq_cpu_id; //0x84 - - uint32_t irq_cnt; //0x88 - - uint32_t fun_start_cnt_all; //0x8c - uint32_t fun_end_cnt_all; //0x90 - uint32_t cur_irq_num; //0x94 - uint32_t fun_run_cnt[FUN_IRQ_MAX_NUM]; //0x98-0x894 - -// uint32_t last_irq_num; //0x8a4 - - uint32_t irq_sys_mask[IRQ_SYS_MASK_NUM]; //0x894 -0x8d0 - uint32_t irq_sys_status[IRQ_SYS_MASK_NUM]; //0x8d4 -0x910 - uint32_t apc_csu_allpendevent0; //0x914 - uint32_t apc_csu_intmaskl; //0x918 - - -}irq_debug_t; - - -/* - 函数名称:smart_irq_request - 输入参数: vector - 输入参数:func - 返回类型: int - 返回值: 小于0 表示失败 - 返回值: 0 表示成功 - 函数功能: 中断注册接口 -*/ -extern int smart_irq_request(uint32_t vector,irq_handler func); - -/* - 函数名称:smart_irq_enable - 输入参数: vector - 返回类型: int - 返回值: 小于0 表示失败 - 返回值: 0 表示成功 - 函数功能: 中断使能接口 -*/ - -extern int smart_irq_enable(uint32_t vector); - -/* - 函数名称:smart_irq_disable - 输入参数: vector - 返回类型: int - 返回值: 小于0 表示失败 - 返回值: 0 表示成功 - 函数功能: 中断去使能接口 -*/ - -extern int smart_irq_disable(uint32_t vector); - -/* - 函数名称:smart_irq_debug_init - 输入参数: debug_base_addr - 输入参数:len_bytes - 返回类型: int - 返回值: 小于0 表示失败 - 返回值: 0 表示成功 - 函数功能: 中断调试接口, - 注意: - 通过地址与,长度指定相应的buf 数据空间,存放相应的中断调试信息。 - 这些调试信息已经格式化,地址由用户指定,len_bytes 不能小于sizeof(irq_debug_t) - 数据格式化内容是 irq_debug_t -*/ - -extern int smart_irq_debug_init(uint32_t debug_base_addr, uint32_t len_bytes); - -/* - 函数名称:smart_irq_get_type_cnt - 输入参数: num_type - 返回类型: int - 返回值: 0 表示当前type 类型计数为0 - 返回值: 非0 表示当前type 类型有计数 - 函数功能: 获取某种中断计数 -*/ - -extern uint32_t smart_irq_get_type_cnt(irq_cnt_type_t num_type); - -/* - 函数名称:smart_irq_get_run_cnt - 输入参数: irq_num:中断号 - 返回类型: int - 返回值: 小于0 表示获取失败。输入参数有问题 - 返回值: 为0 表示相应中断没有触发 - 返回值: 非0 表示中断产生的次数 - 函数功能:获取相应中断号的中断计数 -*/ - -extern int smart_irq_get_run_cnt(uint32_t irqnum); - -/* - 函数名称:smart_get_cpuid - 输入参数: 无 - 返回类型: int - 返回值: 当前的cpuid 号 - 函数功能:获取当前核cpuid 号 -*/ - -extern int smart_get_cpuid(); - -/* - 函数名称:smart_irq_init - 输入参数: cpuid - 返回类型: int - 返回值: 非0 初始化失败 - 函数功能:中断初始化 -*/ - -extern int smart_irq_init(int cpuid); - - -#endif diff --git a/public/rtos/code/interrupt_code/interrupt/makefile.init b/public/rtos/code/interrupt_code/interrupt/makefile.init deleted file mode 100644 index 2852da2..0000000 --- a/public/rtos/code/interrupt_code/interrupt/makefile.init +++ /dev/null @@ -1,12 +0,0 @@ -# set custom targets - -# set toolchain home -ifeq ($(strip $(MaPU_TC_HOME)),) -MaPU_TC_HOME := /home/wangchongyang/my_work/IDE/toolchain -endif - -APP: all - -LIB: libinterrupt.a - -.PHONY: LIB APP \ No newline at end of file diff --git a/public/rtos/code/interrupt_code/lib/libinterrupt.a b/public/rtos/code/interrupt_code/lib/libinterrupt.a new file mode 100644 index 0000000000000000000000000000000000000000..8e0d988adcb1bc052fef43789bd8d94a1d065c90 GIT binary patch literal 10418 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 literal 0 HcmV?d00001 diff --git a/public/rtos/code/interrupt_code/libinterrupt.a b/public/rtos/code/interrupt_code/libinterrupt.a deleted file mode 100644 index f5810dec76034b6ca0d9fd27877c0ab06d03e150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9838 zcmdT~Z*WuBmB0F9Ti60*EXXr8mW&M%)UjnSBbHaHCslPJ_-W#KGjmNv~!y2H-o10T{I1sj~{sMCJP>@uBvkZd$optGYuHhJwT zVSnf8Ui+CA$WA}(?wvV0f9|>G-goY~=ic{p>mK!m{qlFpo9#5Dso*&-U~OyuFbw<_r0I0$yLhd&t+znMg3o{Go#o_xAMl2s+x+7mTn#uj625Edh0Z?Hcaeu>dYyuNVQ_Yx!bPb&C*nmWx1G zh>fO5(?E0ig6|O-MM-&cG2lg0yLLsiwCq4_i*ws{`gLw^#bVg8Rdmx?et5V0F`Z6_ zg;6Xz_F%~($Ji(OqP$f_4pzdbcHivC4S7-zIC@>4Gy-0}kvmfgc;$NTj0tf3hJ2j2Uq9MlP`e@cQ*!!UA~XhMZUh`0;f)VFkQ-BR8=I@b}kq6B1zJhCHzrFnL{` zs0Ez8k&D+vrAupjrAyVr)zj7Bt66Pw;<}12RTG{){OezIOH(?gq;yP5*_nN=I-QH# zkN#nLLdCzGuFequgXy!twQ2N`ktZeqQW|{&)?{)MZvw1oj190VBPZSfSkf3fU_~aE zI0-PP@oa$djC|%ez?8g50yEqCy*-ogLn9sH9TeihTRLmHm!`2g>6nFaL=T|-9o=Kxj9 z@Pl$5VCA%CMeg1IM1OQ=ba4NRtSKDq^);z0wkZ+~M}1waDe_Vu;iua7e{bhgp8eln z$ZmW0@An-FdY{<8Z$Y#W=Xc40Vm)XQK|pPvSCKPE=lU67?!Uep_&~+_UWVSQzdpQI&y=Cb8#$ZpOK&!DJ!iw(bN$c| zzx7u)LKdvMwtAE2i|W~&4Sq|{-M;4JfUQgyLYyGs}=Oiv!UY+#nusDlmHNz7ur8d=C)#ySgGTi#vQna!8#^Qkh%+(u?8_{UFOu6u+H`|ZqPG^A5?mfvpmojZ0_?7{P4NvrssnF&-e64 znqM3UKOYJC{K4kvz(B8G_Vx5HQr@nEJ-vZoxH%H`Yov#^H23x%>Qg0==3-}$bZzhQ z`FuN^{+1nEyPoww>}w5n1$S)S8rb&mwuiSn{oA^>23lJEv{vpc-_Zz+?6cde1&;-! zTe1RaeQQ@5@kaI-*H?fkKQ;oJ5x~cQ9|cr^jsd#?ReYUvXy^cFE0_0b=uyyQ=PK}+ zhCT;c*g3DE-v=%1T-4A@QmTKTuMejnhEt%ot0&s$3$dpDfoQPl@h6{tC=&JgpJz?v zUG=mV>FH)ZHEZBdC(e#{X62^vKmcbhbodPmEk-=nLiqqp_X1bUTf|a+q#UNrljLJj zxXV->K~r5L_qPeO$bV+gUVzAnAXy_Z1iT26bcq(JzY#|MK`8M$s<(3*NG-oy8X60x z$&SH&djM#d6zO@X(D z^-b&vrOFVuku~TQH|+;xXKYrsHDbRwed|EBgh@kUk60b@X7wh?Z7@kgm9x3pSlF92 znq&#Y9wq!O}6Tf*N``TQtc6r{L9iNqJD?amPPt3`-WjDRqsyVs# z)C=D119Q2zMxF5~W4RpDS>%{rl4I?oiOcIf(iONoy#ix4Fr{F$D(+H@xujNcR{=|q zTY(>#RNNK7mEez9l)?&({T=8}o2t=HDwKjRF-ZkiC}hbS6n7<_<(1D4WCs}8k%kO& zxf)~sK=$8HNU$djmCVWOegys$>Lu_;W^yFVFJu@^$ zs?%q3H6xJ&**2U{^�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 OeGpJR`IW{;5BT2!ENF}X diff --git a/public/rtos/code/interrupt_code/libsmartos.a b/public/rtos/code/interrupt_code/libsmartos.a deleted file mode 100644 index 5f68d4c4d7ab9a8b932dbad41cf77ce5c9e89fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141124 zcmd?S4SbbHoiF~J=j1s#c>zKaAOQ*qq(EB=0n#?L*oL<@K!DIti%LIvJ&@3Z#Jtd; zbqyg^wz9jS%POrD;x2me8Z~&cf6y+toFW^KP?GH#yEw_KWKr=l@b0 z7(LOsE<3Bl3EX}D?b~gcPGC6Od%_9W_NT|3K)n4^zvBk$2ix>Lj(c@`U!=8sQCoBQ zf~H7ajZ@Z8+1y%AUOWw%(&oBGkysvS-V~`XU%IKTRXA%ZTOMB29I0%LSd8+;k$OYc zRX<$5xPFUIHbfYYQ`uBqS5scqw%(~mDk@bfT2v}FAQj5jSyi@lQ|qGE_OeF+%UY4d z;<^pB_t$K3)+{JnzG%(bvIm{=^0w-xmbvAt%9P+7i&0j&Ia0o~tkh@KZEB4)H@7vl z-sZEKBOA(_BQ33s&5^l7F>iC$*KMjPuWzYxmfU~8bMMlXOUsI#I^@56ePv5)q@}5$ zGD>cYRL3!5$)-pviS3}3#b|#A*x&21~aNqC0e!tRRY-95}_8S8v0@9I5l-Gl~wg%nqqJw^^l>z0_*E5 zH#m_^@iOg^>T>0!N&qV{i-b2JOvSq-;xTWougt%6NmLSjg6_P0aF!0xhi)g&Z%o@E{|+#ZQkNArxL%k5}iBUQr9;}bP;Q^Ir5=4 zG$mE&%#Nx{l?rB((KJ-nRW-IlYh68DU8+9Ow#oNk`?84E=JM+G8_)+-6JONY47g-7 zQg|;CP*T^@YUq`f4H0%O@g`XoCD&Bd!)IwteMGBJy;$|JC2SG&+tj+G9Z@T^5_zfH z#Ar(zs~?V191bulfKOz4nZMGLhy080a? zsA>?BO(4dqm4WaF$P{X9QrgPUfNRJr zYi(X+c&*JPkxgVGb0)OOiyA61U^Mz|Bf{Ehd8Dqjx>mO))?8g{abx4d3nLrqsL0Su zHZd;IN&!+VE;V>t42<0t#WJ)=7GMnduq2YI${sOZC|;JUA~8O*H$~8ho9kNZ(90af zLegV794=&xQWB&in=oP_rHdm~Z5x&_KdTp1S4W!IMpw&o2Z+xbw!r$fmRf?+h{~;U z7gRMiEAi4s)l*i}y|=j$qX;EItkUXMw?)w9QS_@NPi2t?KQdrHI$#|kfW$k(M^U8S8FOIUQyB z3K?Y3r}elePhcb}=6Ma8G3yxs2$i8I#Y}A|Z;3Qm5AbF^0l-7MoMU<`B5ii68`}_5 z9Y-!Q`Bc{|4ug15;!%L1)qpvU3YA}uu~x%5QHWZv(aiD|$C({JRgayx526a@8dgQJ znH``h=_miJmRXInlNDKxF&fW(%}G`{UR92=yw zI+>p93jde4evmsY`#94b5M6FE@b&6@r|GfE!%fI~&ZKE!_@Vv<;fia^<0V~2*>FFC zx=lje22i)1r)&2GVb7j9w)e3!C-#QU4D9{H>4Cig)J^9}_`#k%2fuUhI|aX!1AD_r z*Y-2Dd&95Qb|(QRv26r$&UBut-HSG}7j?ZCZQ&)qEkNefnc{t{^HY;8e6Dz3657Re z)fLl!_C!qkxqdyz-nkyDu1r0#-LMbYeTMyDxOAd?lwqHxb;SnZ(k6)Y;L-+02W}jh z;RQ#gjhirXbRa#1AO%ivH zbz#kImA9=gSU z*24E0jV(Dd8k;xVG+Rw!t+ySRgjjDu%F7qrfB%B_mzOR5z>@Mc?=M|aUhcGQYN^|> zDN>U|QLYo#ESFi>;P)_?|M7i}nqTVK8#(%Ij`#_sQl%zt`Ynr=j?PG<(W(~|ZHT+i|Y+e6AH;;JoDxvBDKK5 zJ1IZ+Ew!A$(|^wG^sj<+OY6hsEp;D`IL%n!R&T+=9uvmuhcR7zSGOWPe7*&ffI&6z z=;WB;v=80E9$t&$X!iCi`EzWr{W&DrGzW(((G~D-!yupFa0J4P_D>^6(2?h2K=%Q5 zg*v>L(oIoKnXCEOY{c82rnXtNd={uS1usRQ;;{IW*|y@~37~p^Ff-t}$!=bz=Y7j_ zzv(51mU&6bys@30yUg=KU0wnhqnCNXW!{L;a?kyZmvO)6hL(knc!9&76K?mClEYsD z=aA=w!dtwNN>?higbq_svtxxa7$hll(Q_}tJD3t~^>UNl#hKoS1wRk$hJvp;%e=rgBxb-%O%9(^u?7&k6Mkec z!%Yr<*&A`#OF@b~vwqyfy41my#d#!POr z(45|kMyvmV5r#|o<#F_0$TJV@XN=#@Amx7@C!Ys8BdnP-;A9GB{27>H(GQOmh$J|vM+6vaxN79Z{Xe|_zk#h ze;cI?*9rg6a5o7ajWYf#!IOX=BbK<>7Z}%#;6Ew&d%*ui@GpSBF8Dm~v&0C?G=ER{ zcYyyR;a`AzQus^3XIrO!>iHuv!WIE@kwE_Y;f^8(zXNWz@HfEC6F&R)Ea5)_cfR0X z!(Ar$4Y+Fs{{ilL!I&>Pt%6g5I|WY%=D5Z*%mikiCB6;#zY@dcm~l|}^#7LNJHh|1 z$Z(ut`WW_0aQ~NJ#`~JcaIAS#_($Nn@T2@aaMJ~U3jA!r+ktNq{3GDig8u@{zQC}P z;8qJB1visr%S9&)yDQUAlLu?~99zg|-EllIeATYNXWcEf_{GHFv%WaC82PorXMNRJ z{956&JX$S&yYN|_T^4`4@L7htEdFlcv)t+g!*RmdW0De+N2E-cIBslKYV-xC|H@H* zLY!5@x4`9;={p#G3RKHtF8d~rp17C5f$!c`IZD!y)Z92K?$E@fp-sp5&O`L~*6(0A#eAcGM z*2t{;Rz7emX4Ck&Vip%N<&`xxSSoF>77=e zIX(+0XUqiz_}_+rYy7@rVS4`@3QS)oZRCyu8{Ooe#Il{wN#=u(Vfry2dtn*Ir0G6* zE@4K+(2thS6_|?V9&4gT!5rS*dUIRIU>AemQ(-Ux+ z52oMbV|ARqW>0dL|4;cbpl>Pr%7_ z+VLi(@G{@s2hwZ1gHGY`Ah4T-ckgL<@0r$q{F{kc&j$wZ+du#~CF}Xgz$ftzKLptj zWE1lt`yS21O!IUAzd>}qj(5(mU9Z*d^I$*z`oP{q*zK`j7w{Po(sDX=?UtKB;S z_HSPwczP6U_iF=BkA{8X_1dR1V0XP%`}7#tPrW{{XB_PA*9P`v!#?$T?VgFSdta;F zGa1(Z&7&jx=##Gxd?wqO)Ss>0=bn6R;4@q9d+RvDeJ1niFXGX8(j8yiZSw9S?@1^pyWB{-b8EY^p))(R z@OaX9HGWd?g!D_tZ)wPS?vrQqZz0zbpB)eDhw)5EZ$Eyd5x@7G9QaH-@_AQv){B^$ zo`gO1uC0&Fm%ne<$81#}L;pTy>T0%=bK2k>>o+X&vr%W+Xp33LYP++fK9ffk9-pY{ zGpd(m#JWx%19|wxm)Dc<&)N3JquHnE{`BaR%6< z4q}%tS-Dt^*j>g;?QGFo${6J1gZb*mXZrob`1y&D9cJ`=HO^DL~xI#;CZU=YRH-P?5IX~O@-JDHCB~IS$jSeg; zQD#NS@)FopC3vy6f^XNZU`mxl$?{?01+gMj352d_kSOY2j<0}x0o(@W1_)-r`kmX~TNN)Bc22a~F)_DaUZ z>tCr#R)BB*7R+dExX$n4)8z}g&RpQIMSmXtTxV(H14RygM`%?uB!+rtcpLaee;V4! z<65!$%lXdx3WM?=1#QZM^kmTU zE&n3WCt+#$j;j%p13S)v&-Pvg2FQ!xE9 zWE{&RUog{}K~I<>*i6BffHNova~U>MFh}SV%u#7FfzA6bzOys$zjDauWEUone8Ks^ zDd_(!uR_X5Tzt=B;w>g$(#AQoNhiaYxVDoo@7nlo#l*FXe2J?E*u-^!G7?uWWd!$; zFL50tU+@Xw6nW3}DzUs5+kxh6-Wy`0i~rtmH~G@g`0gQ7@P6{8+zya0xQ~2HGH4Ex zFZc-g(jfcE7krF-c_(|Ee8H~(Gmq?VwC3I70A=LeBHu-tyrdFKUbsHp$b|z8i)(}nT>=s_-4VZ!}~0(-km|7{o}8M&wOB` zgbK@k(Jz>NhV^37qteemFm{?3fu@Wy(T%fl5B2!HqS%HQ-QBs=Z1TRs`yI%rovHQ< zjml>3sB6LdBL3=$S1){XWOkD>0DpIidDWp_#aNGIY)qB?sP-O8I}Y{IgzsqZq?65v zhB8|fqf-hsb%=in5}l)%c@@gW>`eDP)l9_*Ag(LyQ@_gQb$=tgH9?T-c{>g_uA%CE z^D-Lili(R+U>O+1(j?RxHTv8#^GnBB2^ssTa}@6vW}wZntHDuz><>@D8r^_SI|BXO zVi@=j@U!)uhoXM)sE>SF>MMdZVE~;6kkDKLF~+YJw88Y+47nTvF~+YNv>k6RBH=K? zc+L9&#(NyrgaLFu1$_@&3LmpJnD-DdI~V7ucM@v<;=Flt<;}&_-$RtjyPg7-h#8ok53_&qvfk^q75m$s zJ-2q>f-`IPaj#)OT-mGm64HJWs!pAH>tjFQJ}u$^u;|E5X)W(T#IqdzW0&&>Pv3 zWB19W#O{+*zb5M*n841YdLP}W;rvPUy*t1Qgk@vfVh{;@{Gvp?rEt*0@h6}j?%~96 z6-k(Yr#uqfaI0oGfso>a1MIjCwaZqmjPHO>HoMp|UIvxo?%YVJz?cU$#eoWY+JxGm zsBv|4lu|Dt%&7rQAVEi*@b2CVBX1k@z;&IwsqkG^IX--9sBCi7W~D3cqKex`=6R9W8XdPzkp3baKN?t=cb>4PF-8~394U+j6(YJsU0;zXN2?jLb7bR4&~fE1rsX{97TdTl9UMM z+HRfTXW&){u7TSwcsJZf1$V&hg3XYmZU@d3ybG9dQRf~@rpJ;wXvrKG{3cvA_8{yl zz$ajh{#SvG{tLiH|0PT2vL%y-xQz^lBeOj zhh{n~`KRE{BbNLw6aIO)s|EiS?mEFNhibu`-)<6o3vip@8-O1rmbgAH{CVKBJQ;5h z@IMOvAaI}HO5kq^=G(LH3g$ZdUj^R}%rc~&CBT`)>X9M8>r1>UUxHm{*cFlgL$>vM zv^5yoOBl82x$-Z_wzyjH*bM#quow`2L4YS9 zYK)P)8w`W#_j|~lF+!H#oxpbbD$w59Hkm%=&7^Otgvp0X^Ai+OgB1ZGE&B;wBX=)` zsiA(mW&f~(J7;5uGvDv8hLFnv&lr>TEnpZ-zgE;+7F_0oBcaJh1F#)0=OyeX#uz_N zZESt~4Vv{teSGa?^nC!>{_S=*muevl>Uo*8b12Al>Sn&?OW|D8HhWj?9@H?XU4(1mC(@FGGXZjH8nHV^F>pvg z9A{&^2+tXa$_%x%(w`Is^(RFM(QlEw*sp{12SuUy^%FlCN{n4Sg=1GwNiljnt;hKd zn!4`D!!4=O&@bIvAQsFwvY~()j@VITIW#(+k)=ld(x}7@iSEu8kWSzR>Is{r)8uJn zD(OP{){_j(gmjZeYU_?KT_;evN z*`1NWPa;BCmZjhm2dwQJ^|1s*ehJtSz{e48a`3xOxYrAW--}S~q`woTH^=$M(8GN6 z@M+}27_Qs&^HXmL;JS^!bMR*)t{q4xg64dQJhiR^%`h2;hHK1!#yanJqMUJZo%aX0 z#D?bl{{k%QmHubp9zz-p{UYcNi)LN&w>sm`Ib$s>+YQ5W&i4!~+YRYd$eO+QTyvSd z_?%Z}un=If$QQguV< z#nRdDGZm8_E(}tqmdb-{3!qGHS5Lw;dus0GDNB_zQ*4fq$v+nVvG? z{}wLim6T^W*9iX-T(wR_T-@)j)`q~#fwzl1>w)V5rkM{su4jl#fe(lb>;7xPPX_;= zh0i*EUijQCV%Cgo3$F z@r#L34$RjYi@#R*%!?`?(a-RdXL?#K`F7zmFI^UYyYQKp_XviAzB=qW7yGO69&V`B zF4vziCn?!$*8i9_Z`_y}zvA_uXjgf{4Rc78^)RL8S@W<@8qQqp%)t+rYC%oroLOw% zZ`*txl0i#)1^P}N%G?+OGr=H66)M9v!U>u&2?DUi7$a@eY!5q5Kgcv#iqnsMmwPp+ zZ!Rp&VtC%Cq54Zd+ZwM=Lhf-xhz!YP7A8FgnR-Iiat~pCIMllOeIf@(nLnv{q@lDfQp}qbjdK}t-BB?=?T>+H z=c5DttRFn)!(LZ!0d4EsflM9(&luy!K56SKf)dsf_1Wv{^`Px_bqVCCgK{)R-|+1zywI(mIEQzv-Rk?|j>zdV%X@b#}@mtXacZYX9{$>HU+Omx48OCv{grs z!Z>m>|J)xS&x$VqKgOreZ?Vqx052D3k+@SY9skFv+4}cQoO!VoXNd6JkX-1^-LbAe z*!9#)Td`j?cL&ps^Fbus6#O1aKKGBK5Y>4w|Hv@**&!wl@6z$-!tXo|6F2wEF3ftU zpTEhvAAs)1v#vS)+n}SGI#PE(ADpMe+PF_ zr`u4E{B64vb%5EyY1XN#Z>iriY+tCOfT^SH)_FdV?c{IR77wGx=>=$`{%_}ynS%CU z+B(mu*^2XEwqnonpti&IF+|&euDwCF6{K@2+78+w+s#q(0}^H`>Wuurc66mSUgq}DZZd^Rj;m5NG@!W{GgEIzpK6cYU_vd1C4D6kXcC&u_x_;AV zJbdf$x!q44_0W$zq~&u6KMiqu`2#yYK4+l&MTGxc7Sh0PB5sc6MfGQ-k$rn>#z40k zBUQiQIE8%Uy&>NhG93DZzn4Uflki^zy+&psbaYbA8rRr&a;?6j$G?HSQ;>e$ZrMlm zm}vB%-2AfNiZa`Z_8Z6B6@U!Ofa&JgK^fKo`}RWgZ983+X_XjvyY;sbX8#Mu{c9St z{un#Pu$;{Ef@2GxD=d@fvkPSh+O#cmmX#iJ29Fa=|4`$^R*VPRWSsDyF=&tK8KcG= z9ZuCF_~scCK$!S(z>gzt9Jt;%e0_*(xPJb2b#p8|BXd|Z1RR2eLoAx$T+jik^x1pihc0lSZh(5w^ z!m1L`7SS%Y@>vEy)_E1j=JeWKOegnWErblyit$hF!!l_x{ef*t@l^Ygy;|4WR%PCU z@opcVhbG_VIXF~X4WO-dvOigU*RS8Wc@NvLT_0>~oUfU-ZSqE)Z?_G;U7dcKpnJGB z_jYyR*?MhbKwP;FSDvgx=G|p^TJs2w2bFO=o;_#A2=1$+jNR_4(kd{XqRs3XJaEn6gl3E%Nysjy|7R4#9Bk6Qzac2xBqV2bdS>zO2^{sxL}^VmY7Uyw9o+)*tz~+b{P|QT2jxME8LgvBo;de6hXZ z`M)pd{NZ>F>Y@vMdMlnMjX%Chq^Fbo~DrKg*GIZOWg0vkLQl z*84)#dsP^1!I~ol(PkH=-ubNI$#dh0AaqnCEa^&w=X2WDYwDHt&32h1-)~-1n=$Ju zvyMXlFwZ8{Pgoy__j+`i{Hs1@^k1(o_H&end%f#=S?`%N@f=gm1zEN{$JCU)i@wM4 zfOWz(po17seKqFbOw+c}13O*xC71IRq{n{#t8$R`!!bsU_treyr+l(BXzHODRXY44Jpiw1J(b4E1v$R!qVV#og3Fr_-r34KZ#g7b-{X=19ROMQ1#QU>L-M>zc_LC^C9R; z$f@n_%DnU0YV_S;HtIs^gMD!*y-Lq8e*aNr=%Rg?ys`{cIU>#}XkThwYo76-&H2Rd zs1Hm33pgiFb6s>jx~}KlO;66{Z}h<)gmqwxU@KrdNYmtB{zeXL5o`r)2W$`Qe%J%B zy|8^n;N`-FJqYW-7Qt4)c95o-13j=suobW!usyK*VGqFe!uBlyZwg%4gRl;45o`r) z2WgtQ&;wfpTLIev+XK5F_5f@zY#(gTRJgDQVI9~a*b3MV(lqm+2et^d0=5IT2X;T~ z0oY#HKG>c-xUdId9oQn+3fK55V@q_ALYN7PznnVI9~a*b3MV z(lmEL4{Q-^1#Aaw5A1%}1F*fYeap3M5yU%S`(d4gaB5m+*2J8=88h<>3g-{CacR&w z%JE-?*dKm`^fsqN{_qseLIg?CFGP}~o1Rk4$;+u30iL|9&sH8W!r_t4Bnt6^$4Dz? zk0&^f%D`F1S~N}XqZ)06z)v{o2{_j|sxM;(^i9NXWtsfFY)tG1DSfo^*qDu0vTJIb zztPI$an4!(Mk_^T#|P1x#>cAXhOG&)EWIUbVr+2AIb-nio&H&fKU&9bHzAF7i(dxS z4?TB)aBr|be0h-muH&tu3lm5Tt$~vmRy!+knzIVm2$nlZ!ttl`1PO;Ca6RxkF(;TD*Y*n-lWs%eNM4Z8zV>I)b!+N$)xC7 z{sH_0sk)YbMm(a+3Hn*jae|9YG34lC_ye_nM&e6j>?#@j(%Jomu)PWLW4SwFR6^L* z?Lf8QY_+XOm*seT^pQ>lGzr14qpQNGzXA2vReyu(Z-V;kslOrhH&Oi!JE2ZQmi7t! z@qA@dLagG`!a-E6c{Ia9NnS-182#WNOyrD zYZ=5{s7Qz7fU_I1O8BLU?dwYj~Fo%Tg?bn2crDl3%AqlVNa@`53C>RvRYPTfn2 z)bX#4R?tPo_T#@88^8ATKk2VLNMUG@)LQMrH-)2QrV8+QcK@3 zDzy$x>WH^TrJjqG(xjH^h)R7gR!Wmv>R?prUyYQ`geLt={McnPb=27qtX@gxfU7uc zaKibut9o>Cl=Ft`m&_X~4s~#klaGEWVgBGE9v$tUED1~N%%CqZEBH?cIj9@X3x+rV zhd3aW;S=esax4_F%vGiYQ~{PgOA`hg4X45*pH^}sEfUx z&fM9@>*ug%lq?iwuI8IZ^JVbE(1^(@*yKlNN$Ap z%jNTI(Lr2ZikI)yRaepKOZ%*Q^3+Cgb+Z8C)OX;aNKg=SVy+2f8G)&;543I{^e-gz zZyjXu=ybC%{f~CJEl_#+m;RY6_gHAe>h>v9YU-xRCPeDcOIHtQ5R zU29-mUXJCbL017wOI_~hU)iWLg&PZbt7D707Sq06P;>n22V*a0WCUy%x}EtKESgNk z+`LGpF5Kv)i1C*s@|H%MS8bX)w?|^k;PsU1M#z{O5;fntsWN&t%%D?w2VYEy0>af? z4sx$rP-~>2Ngs2Io9}Sr1lx9O8Rpmq=1_qoX+Q?%^#J zvuVz2Y?_lSo948}ra8^H63u6}?av3UP4m%e(;aa%AD6a2 zpM*AD5=ZkXX#4Y-XVdZW%*tCqRFOce1j0PBO&_N?$K&6AFuY7iK*yZIHxQoKU z_Y|Y}QN>t%GoQN5n~YB_Zov2P0enW!k1E3W6eH6cwF2M8;~tD<-YEEsXc!_R5h{#p zGVnG1NM2Ym7T%fQ;ogjq{1*SP7YyI6zOGMK>N6oYdU(On%b~{2OCPK!6#VQ*-8?Kf zL%~ySr%Kuw^_9rD!(M=2ha@5P#AJ77rWd^58_85GV}3>=L1U00d_|H7I09UxEwj@b zk1ICt`9IPV+~$qxQfCJwUBnkBB}lIFOM~ACrZp1*)4@ab6Of~{@IByP^rnG53p(;t z!30&nWuDGwI>L^+rm(pEV}#23pxA!NRP=f`A-Xw;?)GKgUCX@b%e(@{8$9zU?+OX- z!!;!dZb62dmk~aPKi;J9ue=FJ^q4~^vm;(Qc|iovK|O@tRJWa=AZ}RZWgKEbq~O?t zo8XQ?4#M+UTp=8bkhF~#q09`nlf3B7Ro9W^Ld-kl<#&3wAW7p%E%Rhk`#r5l%$VER@0_bb`YwZ(~&nC57HV`%#U0{4y^M8Do)k#T8kOoFp+7 zC76MP@be|yCo=&s=?#|TO~FTSp-kvv@NsGX(2legUjLLW!Z`l>eqSJ{k1 z4%Ek2y!?h;I+<-iC&ceTsQ6JT&u(ElqFAn?NI~?Y5ddvyBw#92@;3Z}r$3_ZwCTZ- z9I8|<^J6XyQor)T?)))c4w5qoY2bZ0kD1CyQw=QrNAuwQ4{J&}O?^FD1TKr`r z-iL4CFevjDp^1m!ynzl}n5hmXNyOzrq2))=Y?4v1ymcr;C3_5nI1=Lfxv?DC#~=>< zUC63=PYE zG`8!f+iR<;y_wkD?3?2+jfKIickD z!JP=2xF7Bj3zIfsUk1*|)$zUpoGF-Rl2B#^kdGfm{%B(^9QH=`oOp!EL zBcBOud&90oop_!+qDTMXL-x8A~}$!FMp!AId9gEi?t z4s6nYLS$-C_pb^*3HLm#k-q?J54T+~WsX`nA03`ycfl1n~|>5QvsYQxQTq}M?81N^r;T=)thEKzsMKd2Tc73;r0vW zFO@ull>B3G&kE)*p#y@?!{x7Ilp&v%n7@$nS5Kp}71;EVc3{&-c8E+5+-||U;O-IJ z3-^G9d6qVH&VbANdQ`k{^8^>b&A0F_!3W^(7Q6@Ue!&Of_F4E%VEk&Y%q8GV!D)CF zm~!Ti`KFxn$d_`SLB8M;@~3M(rQ{3lCEt`e`GViH_?ImHc05zex!F5_&AHh<$GoLha6MdFlb0r7la~(iCH-CG3*JM%=Ps>lFpWuA*p^Jw1E17&PCSUSWOupcCz(zmgFy+=N zxCG_R_K`7D>wFYAQ}8q76?OY1%5#==ZXI!xET27g5L-HE5TL3zZ1+e;y4$lPTp-gLNMps zJY$0VzlO`S67PgNNAO;_?-l%IxIFWMGW~EL5d1H2D+Ql|%lIhs8@O8p{~7LMf-{g8 z#z7gD8{;5;5BOgsmgnpd;V%InA1o;uu3=s#mS-;GV_05_{%c~4Q#5Y~|AXLTYVK@A zo1)=MR?1hvRd+E;-yA3WdboMS(s#_gjJ$93cJjw)J$Dg9Pbb`B;!Mq7A^cCm{Q&Ve z%`X@JKfq-i8>eXghlJ0yA>*LVKDdt&=V=+POUVBg+)okD)_i=pqxk3Geo^p?aK9m# z>wxD4pM=Z#KlS_??(c}@x$~Cr$>W@VV~*C(a}_AhH9@Xmwx3%C{}J-{2)-NceS#To zh2U(sWrA;j`+mXHS1$NQxDmlO!+lurY`7m1TmbhG!FR&lA(-(zEtvPWat*>XKLqzH z#7HB}KMSAnydZq8TYn(@X1G5U{5Zn@O7KqLOM;&S_F$=#>-Pzp`h@=s;`+8=#`S%{4EuAzjEn0;#>=>P z_69NIN=CYgsec?X^z;2juJB)k{(QmIe~)15Un!XS9}-NR^@6E$3o&%^9mzJ~{{%Xp z5R4BroX-mWA#k5yrt{l^e++z_7<%|FEPUJ@}O46PZ1D=ARS(2JkNk{t57(MTYOt zu<=yoh4)2pXg22zXAz@JX!2kUpO0--cW?_VexdN$-xpi_V&Su&uCe%PZUCNoFJ$p+ zMV@`9)#A4cpY6QM;%^r|+b82T>D(=Rwz2&d|A6q>W)52XXN1poa@67w*6Eid zE;!B&Q>P`5oSB+9eMau=q?^NOaFUGwjJy zgEt)v+Lz!TJEgWs_!~{4nB%5w({{(^o!S zT5U){O0mhQJZAUF5Ia?@tw8<`Af2bGw)HW0`3!STH7{kxalUmmPV7dTm`y8Y^HEEA zwZAC|8>I&S;2(eF*AO@KG(;L&BCWjSIPS7zv0VU%m(x&JOX?({a)Om z2A(nKCdzP5LyTcYnF9RfwtZs~1l$4FV6qO*#j^}!5Z6moOFyoo@Da0mg^sw=nydsHxdU->uVQ|z6jK?D$;V9=CjUI-co)1e2L2HYgXvd|v}K2l zRMd}aA(ICB=AfV^LXP>RxXJHlfvGPamgdo1-0^M&q#tcWTqE~^X+xg{_O}qGyfK#` zXB*>}D&=DQC|6`W!8A$WcN7LwcK%|#mxCPhfg#?{$DhEnf;)vXFz>?i(HP_RdjMNs z!o9lQsSiWCua9dq`z)|D$Z=^yIU1v{5$VH!-yEC`h;~4KM$fod-wl;@^;M1S{@q08 zEU;nkCAuxYAV-<2p9OXj&rBM&eY_<^8UsV01t#B++uzg<_Z>UGufC@54~=ew8|wRM zey47}c{bnfcHnzmxBt@jJD~Erl>DZ&Na&L|*NOB?npWShlm3qQ6U+Cx$j|q; zQU`cj1#bnuru6&gaYw)9jQ_@*-=XsR-M|n2_&>JZJN}B_Y`+&ZaX0MS`nD_ji59;0 z;Kxs%`BEzs{g5kBf8-U`-(V%#-+v{?eBG47ubbj-`ALnH&>uyO@V~f9VWjH*Jl!`q zv(f#6Zq#&uuUb2Y(?Ei!20ZmgzGYfPzNh&K6!JcZKdv60<)bJi6Vft??eGrsA`+N=gmhPCtN1j~QX4$HYjFQ_@OzO;mci zulpwD|L)!-DSN=9W6E`I{}u)1>$y=E`}Ne0UobIH4Y>IClTBZ1MHAVRx~? zJR8&^TCwAL{RT(&v2u2zCN=N!E%%%k47Vqh?UVk-^aI#5+t^oO6PzOa9rj#m)F`)R znxevELR~M!I~JR8zheV-O{#v!*LirpBn7x7a_ z!6oh&`tRXRgc8;X{qacm4WH2yVa>bt9ANXVJ)e9=3d3it`Tes4*!;fTMLy<}G`nEU zeX6^G&3&qS$j3U9rU%yi9(5Mj=pP_o;^JD+q=)aoO?tRj!pL*4gpp^7n|piM2KjD- zhI1C;r{Qu>ia8_M{3g%`-cY{@oCALz#On+{VT|qyrd+KObXj$>#&P) zf2AEWep+kj!K>s!i(wO#A9-APL24wqQ(KM8(ed4QsV9RS#W2gw`|z;^Zk{b)pq88x zT8(1yOUFU$Llo58G?yT!<_04F0@@sZ&oRb8{@g@tMj+M^XD-H|s+D2;H<*lCOxXM3 z@~0D49sSsk_-=q`gsGBX=6g_ZlJbqgUxtt?vP4bVkAr70y}3RwhRb{~{q&>T4{LM-I{k?E>jYwq-(k?UzJt)m z@YKg)*ywu<*k0@PLylRY9F5UOAYEGV+tI)-h`%XkHjqZVPibt9yzRB#+}rLfe7om9 z@2FBy`)j>n&wY+N6OZRCaoxwWll-%bQj5FQSvJ<$Yn?bNDHrER1#k}%*SPkd| zp3^fPX*ySovq4c7qD!xPb^hshP3uqVtUaa?=QHWNt9ol!<;OI{*B8&VS|IhsI^elg zSF0z6$(4FiVXXRLzF8LL{H#-_<=)|h*faXV1J#j&?rZ4!)kat@j`5U4&1g zJg<(e_b2wdlxux&BK6?M$1_*?s`qJO-Sz{L zACq?GpZ&xhHv`B&%V2BzKsWndr-W5y0h)b?df2aqDi4NbnK8UyHgLi!=00I+>OQr%$N#E^pJpF5T0KmyTDBKZf&y zSsur9d5G?z%3}faoAzPiH08nep!E!`+b^r@Egxz3*_S@{gO6<3{d^L}luG11@LFwm z2s%S}rfvP$rQ^@5vxoKgodo|R@XsQj=iYkj2Z=eCuq7E|ZBEv6If0xrNf@K9sgC?H zNbBcWb-FyF=Yg9xs-6jxSx?b3_5Cu)EVj<<)?+x^+yAMwoWUGJpC5jmX)(_R)(7fE zwH;H>LzWTbP%k;^Y)>i6p`NwS!RKNCEW zq=$1Sb)F<>lVyU^3bZXyeB-Z>w?6s-c5? zX7DUgt4(ptF#hj25B~E6=`_!Izt0U$ySYbz>z1L)P_GTz^}HD6FQ=iAa!m)#GobB6S!;hAY9;XKJ5r%D&;rVQjuQRPTng@CUqX$xY<8_4pEU6vW^#*E)g6Ycf%uWJfp+B4$k9Jl&R@xH~d%)`PF z(SElu730+DV)dJ7HP*0P^Hz;1?p^@?0`R%6&BeI3kS@luT=1pFE<#XC`6FFZTGc;^D}$vXwiu&is|&%nC0`wRVs zs}uUMPMCI6XYqBS(uI7Rc{11Xxsbo6@-)wEDNmN;0>oP>Wm*ZW?{UKU(8!m12Z3^A zUMe$+)m)K$mLX&ZkB`u|RdjG(xIn@#K-g<;FIHN0``3M#&)Cih1L|2@bA#?Hi{SFE znyMR$c^}5nstHIN~HTp-dmrnE;Y@lKyp!}G9zMJLyvlP|ua)HagJ-=xCYbi7=K!n| zdrc7?Z;f2gnk#T_!Sm9Gn@bEgx6*OR92@fyqnrIDfb-0w^QnR8^8<61T$I^R^Aol~ zW9?_e_0}nMm^py0&-5*qWqgHspB;wj8uGqAIYWN|=Dchdd=Gf^^xA#i>DqlC$GhA6 z&YajQ>DY_?8Le5+rZ;m-sSUzcmgo=5xc+(&z(>*?)Vek z&z)VX_zQul>$8YsA>vz@`saSiV?0#!8N|tZqsW^AUKiX&Hx}>YII#%#vu&GNypw); z7-tuDuj{XZ4E6EOES2VT-1P-IkUpT@4DI55iIEfk+9y~x97|a)MR6_e%37 zqn~4cv=0@>tnZjN^PbAi=K{QsGW<&9b-2F6UrAippt$_C-ln}cI^I8Y75}S+Pke{r z-)a2sWS8<)I_hKh+yV^i*$8o$5UbjcSzH zRc6ldj^7lf&(uzj-4>SNAH=P8iDkwF!r9$A&=^0EI<9-HA4rkoVgjY;?Ppm-9n_s2 z&%~#TF@X^y&-g}pr-zENf+KM#7~^zVJc?O*H4l3(z+$t#dI%>K36vVV=g z?|UuygSHi_gp*iL0>)jSeuoYR)X%%&MEqcg)AC^hyX7!t#o>>p!RLjO_yr2VxJy*v zL>?pHIM2ZbUlf_-mq4ZbkbIcnt^j|obP9rx1-RGMVH$!T59p&{ZV7<+L_i+`J(I-t zKsYM)xEvdOH+?=CNKrn^NIZdannxzy0Z8L6(y4J1DnX56cEe5-=jeSq+&&R}Nm7}> zR4U22+Ls}NKeltOI6oQ0`Pm@OtAjZIW^+{PPuiS|Oo=(NI$EYhsxVcw1GacBey|O` zCY&@@h!QL$`@FCdmVh!99aXtZNmfzvHzJwLZRsg3_(K!?dso%Z;@}!r74O$kl)(pF ztA5tHx_*?;`(0f>s#$!%)rYaGn){%erW7b*otv(RL)2F8W=4q$Ih6Z3Mqcgm+yTc? z?ciZIC#s;$)#tOT(%9@yQ$C7##GM``+T9sZ;=}GuQQ{-+%~9f`?k!Q`uUvh^yVCZU zd#mzM`T1)%KT16A@*D-dYasYZS0DMV%3y~(KkD;0ZjqDB!cS(AMvMD`U4yCuemjVB z(dHzg+XvqeP69)y=2@h5-bmj!jW4TE`Hs-ODl7kPYkPq5PEd~m$^3FLWj+4T1Sje$ z&kAPhD*qm3$4Hg)P?z9Xsd7b(lPXt4mQ=YSvh6A#FSV@de*(@xPG*G3tXfqnzog=T zq$q(YQaKoWZrk64s1KwXD+8Jw>+a;o;!fbVN?7frck-j@ z>qq=eN}ylTrbG8j+H^`4h16_NlFv!nDin1znzjxwByFP-DdeYZR3h~uF^wwBXyxnR znSk#eU?tEzSAFlXBg!fD)K}9lM>#lN(%q>a4Vyj20a7Qq-D4d3fN5?V5~aBzKfqK~ z27Z9N5ZfzAoyi*&sl(?)!;fc#%~0$FCV6Zoe)!2Ai_8z7qey)|cNfKVvYzx*Hmyvx zVw)$7#rdc{j=L`!>r*cD>WbOxN;0*+9#<8(Dwp}eo%BlU$hLdXed5^?GtGEt2$AaxhHL1_kArGzILvQm+g6{!zC@1-(bdS6NK zlkyd%&QD68N*UDYqQiDjL4Z1ki1|#tP6A4e-ZkfIpf5Iw^lnkUpU!45-$u z6WkFEe}BkN@cpKPZ-TcIxIe_!r~`22A~|f1252?`bc8;sOSjny&rNF*{&6-W-SYk> zq$*i85^_XhZla&0xrwYl1kf?umKYrju$VIeerN^*-Hm)w2l`Z6|$s1wt1T6p0DLwW8CLDe{kPvfvXH z*KMf1zh(<4{MC^F=qT=Q+q8)q7Oq-VvSh(Z$gIJM-^?%~z%l(Akw>bm^t@=SG6&TtEIHzheNU>Ele9TTE3c|CJwYO ztF2*+H6_Ygn-?`Uv6NL6uoag1J|z)GvXmd)K$Px^x|V8#(YPd6$}5^lMJjbM{?fRV z##W>hcSD$c;gNO~1)BO2jmpb#etyl$$Rm)3;_|Ww0Zb9BscVR=L6I>bi`yC+nEG-R z9~-dl0u~)Kv&sB$!T<%@vV`MfL0#gu{c= zw257~2{%7D^(Z)85K-Qu^eifUpuFsUrwR8XK&qt~Uqm}i%{5zE(fgawhUTchb43p* zrEjh}b)Ul=o7om6*2iq<_(}5Tb!mU z{Hd!!*oVutA3I4WrQ-2Pe`EFo*fbXdHr)~D&-uCSzax%*IgaMk z+m`24+NL=*w&{3%@iZsJwmj#&Hq9BXO>=&0)12MfG-s+jpt6*u733+q{71{PU=99^378d0B^XEIN*wS0~@6 z9Ku&>IMVzu&OHYMkVkO`An62OPUSakI1ziS=jk){aSA!kfX8Xp*$~J?yraN4gmbD9 z>=`e#5-6&~2?bwj!B=oYCv}ucD%6$?om6Oq50izH!4DyV5e%>l@h0QjI|)3t#G3?& zv%qmGIWr;o2teKmepb?-H#q$xpeOYWCVIq5m189KGn@Iz9zF#;a^y%b<5)8g2-!fxd<^8$)VO^<;QzExiHhYGo@B3L!MX4^A`G)| zBLqAIuxL<$U<$J61b^Zna(n=pLFf;Fgg@W?L<>LgbNV*RVJriL|go}myi5T#+mZDC|raXeZKhMGr%No0kOLxSu2VI*ZgQ6Qn%*Fr=Usl05Q$+(kHKv4I@c=iB2t2$Q(? zAbeVK_%+Wf{ic_4*z-`lNpGUS4soOyjhK^ge1Gt#?VZ8TCw9U;WL&5W9!Ny5ULFem z7%dKDuaG|kIVBYAOI(I~GY*G>-`Dil75xS~vc63NsZCpfWFamTNg9%f%NB4y1!86+ z7_E~H2JRae$4Y_3G_)2}$#|rU7XsYe>D}GwWwXj|2APdB@NY$9%N6^|~Z`u8LxO+1nz!{Qp>>CHwLrQ|j*j|@WOi5Mw|4@5ZDWpVsdnnr}4Q))1d zoo4IF!36?i(Oguba*zl@BoUEjsXH_#au7I-n=#bD1(lOk4doz85d{xIj7AmC7d{5H zxAJRfCij*@sD={n4nU}!qEz0z47|gJ2Wl*uB&!oWffs=gqNsU;44)$qOPJ6`l)xp3#^3X1T8p2U%sFPV;^?v87a~kkVd!uh37uzp^dVC zAxFHoVhn~H^qT}W=)=lmG_OE8qI&PxL%b}4cXqIsc&d~RAw6$mSS<1qj)a1*HuIW> z;1@7jy2~+4^0Dy=76l%rd70?eUJ^Rt5y*cT%_sO_4l+*$pfj0wYIvXE!!22Q;7BA1 zb(x3kvNNHsSn+wf^g-pJNLdleV>!AwDg?4q7z|!?^W?kuSZOQZ&@d?!M1P=ynP~I8 z1e!gB%E!{vNGU+7dMiEs3HHao+A1DJU?`rZRvfjn`IqQWa}`cE31 z@4^2plFjm={{+yN!#WPq-<2$b4gDeK$DoM~-30*kK79``gBbts0v}6{re`)hkAtp- z0Mq*;xcp7R$Oqw%>XUO7Le4qR%!|p-pMiO9`%$<|Up`!8m>-_;#53-U{ExuPv*;C| zS(e7XnTZv{@NdBK8+_wG1^#L+0v^-Lb7$9J!veogCjCXYc}Ne}SWM63qKgjo{au{? zFF_B#?}ekvvnS5KhWeq8384Oo(9g6O`S*g(0%6kk707oZfn38e{*E|(JWE#@gyB6O z<3P+r`nkrVd=A_S&|Kq@PJ;eEB)nJr9{_(HezM~lkN!7;<{8;NLO%=oP0$@ev#fY_ zbhpq8;BO4eqnY{1)Zc(pAH7*0`{9!Q1Mo?txkG5~3U~(R{BjLQ|Mdu847y4D4}vy^ z`u~jzVNCgq1kL*wc7Vt5e}*2AzW-`dKHxF@J#lnCco{4-7?xS4;KjfxP*elASa1p4 z3c(lPvd>XwJKPSzU2tj1?}58VFy%>SEWsa`{jiyWj{s-9mt1^L4x1_XIB>?j_yhAY zY^LDzz|>EjJg0+rKHL()+u^dl$zKDPeb~sH1UC6S3vBZHrpR!-xg_{9+%RZ{JqDL& zH52Egk5tB)AnWttkhd+ic2V zhsZFl9?D3$?Wc_3Uh<{f`p6f26xig8XD$<`!exIXUJN%!Fz;h25=@y#VR;4$pF16} zJOhPzyYTt^*&%%5UBc&chf{Meqr@1A-|}IdeY$ z1z>YN|7G&W>$n`$fw?ar44jdt`Kja!&Ln?|=4X*Fcn$e8G=DAmf-A_sQ}b)c7u-(% zbj^R1e8KyHRUY9U6wEtzo)LTmuDX{8<-j{}E(!kt+%VdTxl&U*atyUvM}1vvgi|kuSK1{36ZgT|SwD50HPe=JVWRbB_!k3Z@P7 z9v{<&*%z6%wXj)&c~&K@={q^Vrtjp7%o?}_f(zl&8u|IaM!r;JC{JtR+5v3R(+zCW z(<3rx;qDiF04}Z3-wSN?9}$_8aQg)xg-dJXc@L41e^q2CPs{W$t~~7ZG3l8BY|>K* zOqpGnf6f{k70DAox67TBGLzuo-hMk-t#4)yw1y4kNr7D^h{YSdm4(j7t;A7tH&Z z{Bf9k8HY>AU##_)k}r5I`Iw{8tRr7=4KUNsJD!*a6Skf*5?0;!Br=pU<;gN7?t)8e zp1IqB%`>-KWZ0IDQAWo9m4Uu^Mt z*OaL{-Z^FJZXGbwe-Lhk;2OBJM!&j$O4>sc`O|eeTY*g-b&xOh(nY@D9pp>BbdxW5 zKlxJrytB&GMIW$9&j4lQnR}ixf-j3qdn(caOZf!2w5C1tek;?Sd8d`h3-6^dWySlg zOqt}6FYS3I`I5(c@&)rebd$#-@+FTYdv(}Ltdv;`m)lf{xha)9PKj&a771Pqw^VQw+%tg!A8x&c zd54#Y_fcRIZ>jYXq-_+b(zq-0c=t_lrUQ zdGL7m7~|@Ndl1%)GtU6~;|%#ShMXW@@BlEwQV%UL(?)C3&%>HcTS@>nZ7CI)GAtjK z3o*-c7pxi6b_1I+?G^H+Pw`BD)4vMSbl48K^92{dErvCDDFHTlsU=_1Ur)Z^M}e6J z>QVQa-LBjG4$26ghDTIBFzMH4$v5Q&Y~l@LzE7RJcPmwJ z8eCeVhid{eKID-vez>$I-lM=K-s9xUnEx{Qf=`eyalJ~u;5W%f zAELQLzThz8%UGcKslb_nGl7|&iEx=FgGm#!+-Qke=Cr2&&Hy(3w@GAL;nJEqZKsSp zUpmM~o1*C=U+^CC<(bk$zTgAo->T(%$rpSOnCW3WmnkFqc}S{>D;3zR2NbzB}W z!x5WNIv#5LBCUX)&$v z&#`55;hDBi!$nm%8|ewdE=qnMTn?$`yjm6|`RCxyBbL5XDEwc;y+`mxxXXzt2(uoR zVN(J)+*$CS;kF7M4gN<2^S$qO;>Gv_^Ea>zI|uxyh)0m?IR6AoKJTXcuY&pR@vDOQ z-tk++cwW*RhowC4lzT<+A>f}2t^j^ba6Rz93+DY339t;i8!ppI{7-Nv3H~x%rjPuc zaQQBjxD)P!f+=4^jOP;#e{Z48ak!K-cgB4}_&93HS5FG6sH8_`ikw z46%%{-xU5^aKB3|?eGV}54(6*NG#7y9PXmhGaCF~6U+Sb--SN`{J#jE3e5W(H%ePg zBSv0$U*QeJG8Ro2{vB`&i2uL#&IV4)s?7h-%RIyI>Hwn-h&m|hs0f3OiitJ@qmF=z zGVM-9%?vOKIRY|+Vw&+X78P!|x*M4p8f|P@YvpbxSWr~#X2ri{H@0jS6pQ-1yJl3> z()#~>&wX9bbLL@&H|xLb=hOMjJ?D3>bDitF-sidRb6?jv<_e$VJDDUbC%g6!`~ABy9`tI_Z$A9@P`b)Ak5k<^7jgV&hUQ*Ukm@UVb-2s z1dmF}ywB*vzh%w>jId%oZJCklVa=nKXFc*OrX!%v83v*FJRe;cg4>g0dl z==Un^3x>(-=Z0C&PW4ObxLJ5GSZQ13pKSCGD(&e;=bQDpM*o=T;T%2j^R4f4qkl^D zDaL<5^y`fNMbVoLZ&O~k7^eNZjQ^}R;lBL4Ro-XWg9G@db9Us-4LZ;OYuWy;L= z>CYRTG5(Cv*XXx=tI;{f=)2A%ng42-G4k(*DbH`glF2vQ68VgQpDOJjur9vco@De_ zML)|hW3SfmF5xMLUlP8_Fk`UI@IMRFcF3oW?>77k;XgC{OW}`zb@7e(6GqR7{-j~# ze8n(j_>N&@{t&E-@5wJ2o%{F|!|=am82&+8^Mt=izgs7PRkpK5A8i=^8pFR8exqT= z)pW4Z?o--7G5Y1Aw;ATX=4^Xpz9#%G$>oBmgY5v zPZ0hS!+hsyH_REEU52ZKR~kM`_|FZ~caIsS44*fAzp$#7dWXg}jz=HLh8v^H>D6G- znM-RUdUzHUoq4h$qBj~pb6rzJZ#Ft}+T4gf&*;o)T@ih$(V5e_Bl;?%Gj}}{(bpQC zd1-w_-(Ym+oTnoC(?(~`*&5Ne8J+uPM?~Lgbmp8r5q+=GnOpWn^!-L>J_*mX*3Rf8 z(VomF=(Kn{R~nu9WK2XyZwUUN-x1NnbFb*k6%7%+(fGNS(F1V#%|_=w4bR3_o_R*+ ze(Z|)ml~aWtvjNxGCKEEcxE;^YmLtRvOeP9V07-0ry}~(M(1AmQ)?@EsjIHI`pRrc zE^~QlzlzZpUUFG|-34czf8OMaPCmV%a^#3}#tc5AX8hTwo;K{vu|tNAtH#KtV4xJ+ z9(YWOoz{!u)v2w%N0>OdGejy`ybhmzk?!FSoc|23j(F zqhOf+6q!H;dm^)W3OKgoim(b2g^H}F3U*Y9z0*O5cpPjj74j;wV{&sQ8Hy#wPLk^| z@MFnjhEO3~F#XC06B{uaF>e6~hz<~mEGK2CMH3a76oyU<=2RGW1*5OLeIm9^!E7mM z=(+8)m)z1af5FXI^wIB$`I*`{v0zI|9V{mE)}FySi~=SsZtIp9)^Xesjny(|@%*m& zbJ}Da3WY)xNJ+5^R*%+9jSClIU*@J}9?TDdh(KBox@B7NNhyak<8FDZ`RRI!4i&v(8H2V^`aV~;jz5) z0UqrAV(XlP&Ry8%>p%={42QoHnJYSq6KBqggn@a{{;j5xEETTcN+a`|{iM zOcD_^wFJlS23S7{!PV+NJMy?IG4O8rjv?)vq-ROZW19L>`WXvxnwC>vRvwyi$y>9l ze#a%NR($SU#>d4#zNE#$7YHF#fZr&Vr*#HR=XvM#xLp*-L_RG(=45vc|6RZ_ag+4^ z_a*%PH;){gBDCSGCkH&(gDsH>To|$CWGMJ8f+5=eIng z27%w*Ch^72Sw>2upzE+M?LzR24`vCgh?%E5ouRYiP5b2KhypE-O$7LEjpNBm; z<9!~}+AlG!y&l;^v0HnQ)|Yc$iD=rNPkS1Qu6=eD*DgAHLTbO+z&l0ZtiteUAIQKn zSF{r2+5O_SM>XJfzwpwwN7LD!d$N+(a`NJ=f+#QecZ=WmWOW%~e@FP)cT@bkt!!zP zjkpHU$(OPmik9qkYJ8I6@+sqJh2wo=kEM)po!YK>Ewo=+#_Nt@$~PJFu&p8fPB)h!{ET48x9WYA;~rf9GowfURH<1yCt45 zIF%i8?Qp8XZiy%k=xawfig%cAny9a&*&zc5Ua9zs6VvQMsCAWaZtj2Nf2T^qPYu6O zJ>5F}%7kAY{o- zenviiMu_LhAuJKtemM(@6Wo_ia9^(p))h8EJE(D+fay*(W$ z&5E)j%t1v zIF}f0^%nw^KC7+%3IT2P7Xnukqpki5f!0iA2uveJTm6MV$miBfRR{!W+UhR^sCrgg z{S^Y*>aP&cR)2+nw)!gswAEiBpsoH20d4hH2xzOn5D4|rR)2+nw)!gswAEh-gx1kk ze}$O)Gj*x*!brcW}q1D*{Gl&Y+d`~)Rb!~tdVnS7M?r056xK|7SvTl?ae?|Jwe#A} zo!{9;ZQ1B0c}tei{7y$&OUh%>d)q`QzX_FIu-Qwguf3&MxHz&MmXd`OcCX6IiZ;u- zA=wEiDOO-*M=PTi?OoN1#OdF@-SYH51&jH_B&oU_mUtW?hbh5I{oX>e!< zAC@}8raEk&qYZU9BzjIq+k#uF?r7Jl&B6s$6D}NAGp?qpdi=bFx3!PIt!?2u-!XpN zJK7iAI)6du_&XOazO{2v+no0CT?-d>sL|&yD4>?vOXhdXZC^ZII|N14J1!j0x=^5W zj!!actG)2z3nxx&uf1%}+&LFr(%yb)?IksHCeFRM?c$qjZ@#ehqDv-TdQsb@7oW@Q z!Vgwo`{?k?7JkrRlq(MNUU@X}#r#Jb=BNEo`SH6O$MdUO9R8eSlmxArBieUH+ceGb z1JaX8?ob=gT&xW~29*6@*_v0#6kYIVf|Ut;QV?@^qn?<+&lGrpMupcT0NK_<$$(b~ z4%F5*CkM;zQd#&9!l1uWhS{aEwH_qgAKxsdElGeCCr<-QF- zb@F)*bAG-Bq9=meC5#>n?iJ&qYxfz(4)Q=mM_0qsP89aEOC$O{5uKM5KTn-`!q2K_ zEe}i|1f9L`reQjJqJK{G)8J9wxN~&D|6}>|$2*h#`TLvXPp1c=#0;OM(2L~FQYRKSrZWlZ@Ui|5T$huFo<0 zgYqvi%v$<%S>ZWG|AO#h!(S9$Zg`{cpMm9bAFMU{WAfJ-o%`WaM(6wF z=Z(&Nu*vA(kiXUF+%MlT`VRU3X7~}wL0^#i{)O->hJPymcZPo{e}L{0c+&DuHjGZ+ z7{mAz3{R1NrQvDvxk!sXUbEpA`R#`Pul&V^_sM^^VeI2q8}6sFec14c!hdD>bm1=; zK3jOR;R}SnZTM2*9~kB><|l^Hvm-ys_EzDvE->vr#PHqnPcckij5CZ5<7I{?2{RXv z7X8LI8Gb?dZHE6v_-4cCA9fnPUwD~e=A`=#e_Z%s!{`})(lB-UlHvCXGY-i2F5!PP z{3YQE#pw9-JG|=NX-Q zuq&c3H9GfTcSK)hbnd~2BKlgRa}ScYmuG{~xd)$$=uaD+{@NPRw;7!_+Y!-s8l8J* zPek8qbncyI!}9bCWFLwT{+yowrmdH-@J^PzWrdw-Qowq*6!+8!_F z2YsIHVba9A$}$MEjcBjBr1#XN43;#@X-by}{e z5`jWcH{vMY1YM-5(S`f579*c6l1DtBti4vOWYC1^;7emULO{xJX9zDKGPZ*?q>1-HMA2o8CUiRC@1aX>pD&%bXH{*A8q zd+8?eAp<^~%ez~E{&x4W7#4{}yqYrPMH&t0xwCI+S$w45OD9}>@g+z4y%fD=TyjHH zs~+Uu<7Yt4Y7i@x72xSO)aYImTtc8)i13=yTPA!s=6xUDA*5W@u24m87nu-_q&-8lv$d zM@WBaqWKHvq>`5M@BUg$P+T;o=k&MPs zs5qFr-eET!_o+YIgm)j!Tlse%6V1E@5AQyw8~(BU^TGD|9Nu@tL*eS63%?@2_@_Q7 z&E-{ZzbnCLrnT>~)ZeCH}0j}qR|J4B=J=|1AX zyw{SZMi=f`U8OEW7|12n%^rMT6S247u?FLl7aTT3v2)S0MRZI&e2o#K$2Ex-|DMnv zILeN5zLmmpR;*97TD;fSeot=hXuHLKPO1*4e{)GqP4aV6b$I=oIxCF-o^Wp9@jZd5 zfr=dC%Uzgv5|!7&-Me66SNphYu7A@7+G>8zt*M?*x4IXtbv5&Kb}jB|n=SvY+whOv zF?U%vheZ4I-@ju+@IJ@qI@~?T>-wayZ{) z(c&?=L*Xi2#6#yEv@v;7>}%En9$d!%Es{kHs&{Np?s z4@lwHKPE%#zMdf&)|-px$!nu>`aFcs=;-z!BT<5uS-a6;rPe$K0I;Wj;(-YlJJEvQE!pdfM(ACuW z?9y5yfxw)Sh8k$b}#i%#v9 zik)j-lrHaR>FjP9wsQ@%bh*xlA3AT1%JWT)g0wEEk$+Hmk?r-6uJBRmtVZoO`NigZ`{ng()rQ4&59RaxD66%br^%@8R;Zk5`I+MO zPubb)s&i;#>DcyGpW<|J|9C#g_dY7-cRk)TZ400BiDl5oq3uNnPkyQSW0T9?ws|yt zNqY`Y=z%A~^i#cfleE^asv~{8Qt2iOXGS)zSrKG3hkl2?V&uFK|3bh0&&?jWEyOP$ zwr$OF#ZmT*+OSSzFN}exjYzv(Y2hob1NHIoK)S%={c^P9;5YC7?z6Y7{Tlbt>=zq9 zwvzq}^83D*sN-nyFgC;e=6S39j0x_)GZY`|o0DdDy0-Y?F3l>Q;SLSrbSIVG!lWmU#Z z<-9c|yOrM=qT{Q7LOQjBkGrhWbSv#j@vKDVDa}b69Xt*n4P%8iR363mLTKauh4ykD z_(Gpcc5iJ(8|KvZIhA*%{1RQ6^2)ESvoY3do&P`7m-Y{1BANqfZ|{5R6xsvYA=+fO z$E%*+Cd<_q$2<=nNX9?uL;o}W?f1mX#{Gqz2;%|U68d$8#=?qIl0F9WJ3!kqAH?+{ z?NQCk(f!E0?Du2(5Wj6-K}t#^F>=etoZ@z#vI~vcAQ^dSZN;B*m;!SqTPcUA6TyWDt<0m-pgDCZ8Bww zo?m+W_La?hAhZ?rvOdhuAGD$9TdbdazKGK^PP0nKoYty&A*pYYu0BfVZRKs^?L)gj zTYk#kH5uA#n94&rB#-B)xV<$OAKmzmo=bZC9v#K_Z+l_e!Ou#nb8qt{{W<%E#*ek} zTcSLAw7JGt@tk#}b1!n4e;af$_qOe6wE1uC*V>ey_lwK(Ir~V`^=NC!_jZr_o&0)h zhxoqm__jUUj=7Kg*_-jm{n6XA_h^;T^NPz3e{X#PJ)_Ip#DB-S)jzalEF;FuH=YkN z!aU^ngXWYKy5eV&IPDfaYkS(X(st_}S}|JlyULDT-O4k=I1kTn%ui>EKH8q~Y18F; zzAt{p4|ML6;RiqKlDFsAw&#!SAGd!Pqk3oJ_g42~;dzbuPVMaTz4NWK_bur39rTRS z^V|$B?ytDtf1myEqV8+tEkDFuH9G3|xEzev-tL9nK5wjgSlh+*{7vw=qqlU(>+K%m z{_(lza6EDOD8~x&FO(zSFEJmo3H#V45AH+ehm7^bk=}>oIk{(^s4DIv4`lI7P&`Hg zJsKm+PP0x3~K{(4+g?%k>8vZ@(?PtNFak^8{^tO!F@3co&sF zTfh6f12cBh3TG^wCLH=R`OTWGKG_}mr0{OVyvuxehUUW+@az3ABU-RWCamXq+NRCN zvhwlYKp!8=`TbBk_x8L9Jzb{zS>uQ?&3zr(8mxRh?CIgr^ICX!UamD9!dny$y#9<5 z>XbYuwCy>{`PbhW?0uKAXC*JZBVMpSJX28?-l;R#hO55*PEr5D&hXnmdC$&|@hsir z_ekYjp^N&^E}j-S^oh%%?)6H4hVq2wGDBKx4}W&cKle#yU+*D3w10-ChiT0`7-eP? zOXGspk3K5rVl&^;o@T!NV)dZ1f_hN@#PWB5TmB9#SpE*`VT>#bs#Ksa7e&WwK+1N+uGP zOOImrIO)r#D>C8x0*WN*6En%jhQ|qPl}Kp znPKxYsqhjwC38|LONQCA^{*dl?YInk;whZTepz10KM;^hKg6DsS~X4Imku({&^(!b zPdX_P64Em4EJ&AOXMs(Iogq+58X0zmz%>Lg?CghzJuXupvMx*aNBDp`{VPk1M#}mX zNL8sU(Lq%Kmc&Lld&Sw3FxbqJvsZj63C%-p_KKO}8}Yu_FX2eBkrP_KqI1J#=f3y@QG> zr=;9FtQM^y?w{{cNtIJl?(bW^%^_~5<=YfOKM47vS`*HnvwR!U2roCY?rcLE2}8a8 zu1+ID!K48j(*+q(*}Ky;rDP-x(;Z|en6ylHnx;`ODSmgF@=Ii^sHyCGLRtlr3cS}d zOlt7HD8uziW`*A8g-$Zu=NTr=m5)s_+~*n22^sz>q|IlzKgwZQA&1K|)+|X5muF}e z)gftz%QIA1GLjsw$XF}2h8*6QDYVk6g2=miioC0*$h&%qyt}8!cSRx>6$a$yo+3B* z6uCKwRH1JP#Y&j-4gXcoA!+!nQ4Ud|2ZWnUGLm)}knPb91G3#3eff46l(lw9T6%Cu zn{Vk8vexlQ*Oq%Q8J#C(L!+TF7gUz5r>AC>esL)OOC=Cra1hQJw_(ozvM^(khI z&9sb?^jVqm<6IS~pi;{Bv}0B$y)iLWzA@P@?}nK-CdS^{_)fOSH{P%Wm?7dEsNW`mMmV7>XJ3ZLUqJ~*^65Oe`-<7?Jc%(Tw)D=y}YCYoZfO{OGABAy-chZ z$s$_D*X^pcg_6yc|B(ho;*(OYvq?J$);WcoZP zs&(`@qIA4_a<=p6;8LG;-oP~$!!>Bk_ohuE{BJ7yd;GUoLs) zPR*S!(lFJ;AZL*$Ts@*Pbf0w6h@_Lo=+OJD#*a>TKU*1AOjVam3-?e@$URUY2Kh3>&z`64 z26R7;J=FbpQ1A9HUD>T};}*&HxM+-@-|Ky=yLDr@apU21Dw_)Eem_l(Uqz;>%xOt& z1xq(>)QzQs>6sRC&t(7Mo)y`@%dU|B489tLVf9RIIK8ZnPkOR6`;B|1Dv*6PD|()s z8~q-QiDwu9!+|6rlgk*plTPgGPO|3faj*RH?iG}2b&2Ll z?z3mIzqorv_WqLO<`|)TM^DX-Kfd zXYOQHW?KA3uA)0^Ga>e2N%IX?;{Iw}CcKeqXN9Kf-dm|jHiT3*4b)J&kv2mgRJz~1 zQ>9y_ohDvq=`{T*(^JCTqf(rtQt%_B8;DY9Bqrm4eKKgBq~EE4#-o+-jHsh~wBY9{ z<9B;0;}GRCOr3B(zY@aSoTD^7gdYulV#bSbGIMm<<+=XX<<6X@F_|<}Y1tk8(2)8( zOWl8CY4+pqoLZXwS7mkRt{9--G^IQ<{H_jGMu+$X<(6Qk{zcduMEApqN#!e(ok!Gb zC%qbeMUbJpk@8Me7p}~mnv`BYo2A(Y-bt$L&sDUZt(N@uW(Q`f(;9h7iJ0(Qkp0nJ zYPaqm_9g0^;TqUU87g$EGUA>IBmLY)d9SL~ zt}7m>$s@)niQq?3<3NKT`Ek$n55M{v?9@kMRlyO;wGh$>u^~{QA&?u89W1YZ*-I;P zgLLb~B|2I1`-`9^97Lkr#@snqQ>4-xRPPnsi)B~J?l7$fw<7n2h;*=xSa`t7r#KRu zu{^UtR!@cKa=O#&W9qUfKf+fRg~L*V=seT1=Lma2fO)1R{O^iu)blLQtb}V6*Qgg( zo@oikdZNgGT=6@3p*4Q?&fq*=o^j#7Na1@1rcylP6242}1A3U{8J6$@g}aByuGI1u zIkiuMJ$|3U?#Pd2M0bP-ctAek*$6O4_%j}mPxymH;qMiN*DHLFmJfKQrhM#0;g0l! zi^Biqk@AV3q-&t+!g5HR;RgAvRzM%4^u+mjXsyD29$L5YQ0G;KSId9SFlE|qc!&I5 zhM~V=c#!0m=^`&Mm!GX#F6?KkRv8cF>3}D!b0qe?oMDKg&ye$w{BFbai#|*Q`dIZj zab6ep^YFT?gWfNZ!&s;=%pM-dkW_9eM+47 z^%KJ0*PD#zdHI_SZK8&R53?C4lVR*0nCd1A0m+A6;=@#~WSr6UXa|3k4+n`$?NzpLhwtIvr+aTpd z9?tV}#8aj?=YbDgr8c3g;0pO;3{RI|ZFsEw8eM({X{~UD?EGi;!VwkkVd0o~EdtJ5}&vea?&l%n>zg%JJQZ1h{ zf-B{ZiRi?6JB$_fc4#yn@LQn2z0~ip`V)YZ-8$2 zN$95~^rxU3-XTnxOH_uPhM$+e*KnQaFB^VEK4e9@JWKu}!_Uj-Jg87k`Q3(h$zNr7wR|pk*2rIH zc&GgJhBwIPJR_e&I2*#}kR8TDTGAk=T;(BeFnR6K^j@|z4d%ja^LvxHq{hw)JUCk=0t z|CHgUUm*r zt9{0^Nnf+~8$KXEoExw5G>gub+@U=3*^wK}X58$J4Q`UpZrEV<8cQvM@`*U9JdzFRNsefNa%!2h)2owSeP z{qmnTyh}cp=etMP^WA4Wq#dM-y3CbdZn#4J7{im~R~sHHe_}*$HT;D9HHJ6Hf5`A! z`RgM(apVR6W?f#kt-@Zm9mYf1YKA8K4f1OZPn2J0xK;0Y#QE506!x*P%6L}GUu*bz z`HvW0Cx5HqZSr>-hJU}|O36Q9STB>|oN~%vEj&h-<3?ex%XIjB{xlxSxfUKa_>g-9 z9>eRQpOVlwKsUTy82LNo?=oC1)u26w_sTC<7@i9GV+_MzE9}pr6NR}aag(51zU;Z> zWzb_?eykEe2k zU)gQ=&BFg-c&;#O0q`so<{cdTPWdMq{;>RW45P#_&M^CF)*HT0K61TH<{15p@^3eM zhWhN?hR+qg-|#r$j~Kp4_^%CLBFuha$gGq96{ByF|82ufiuqu%*ABOCg+#7mhx?WKlWf&_?d?1$Y);}_}S}mp<(iRmtpea4C|1W z#?XUC|DN)C+%V<*oMF;#HcVRfmLx6fRNpr`b>*yTFXt}}v-c$L;Ls`OaKp6i8HSP1 z8CLKh|4Oj@oqC?6Euc&3KlP`EDO=bhQ*_#4iP4eYZTN%24;n`1IeC%)Ims!^{=`XqY*qg84*Y9Iri;A2&vq z)2qRvb6?j+^od4iJT^r1MyKmuXo~2~M&}-x8`0-EU1Pf|qAxW%~qp6eE&?%_)L~1#}L|rGp@sf0Og3zLqJxy`PW7)>k&hgaI z3J0Cf=?8Gen~vIss;*DO*_lVQooew8ZILe0wF|ngmwpZ^KsU^szHrX19_qPUR9xu% zL6)xJ6c@3NjZzCrPs#bML1QZ@j~)BoQ=2r_HLUaQ(KqVdQ8afBFAxE&Ast+;{-Yl4 zuEapKe8-S#&eNQvajM7M6t^64JlF8t;<5!(4@p+M{_kLt)I-Y+`FeC0$=jfZKh6Pn=lSw%6U*yX|I+@*!}oS+ z5?{Q>*BbGu+XA1wd>#3=5H(k-h7K2j{Iq-*uB3tOKp?2|#8sU3nZ`f|z1 zist)ZKxdx?m*qCqq1{O9WP z#U4D2x!4|DWj4ON9UkLwcR$(Q*?tZ-4)Xh1&^O+{*l!=nJ{7Xx{)6vRf$iAQ>{D@U z^*B!VpNP&a{i^QoEVf?UFWloA`@PLm+&eyAlX+&Tey%Hf-FF4vdK=qE!t47x6whCw zESdwuIE>~#_QgmS&3$3qnVlW^hp^cI`uGd`s%Q+d|H2rRuXz6j>=4;!Aj~DqMcRLX zGBD>r`IY`6AbNUL3Y*!b%{>h0c|Oqrtl?Vx(7UWeLaA)G5K8NSCt z=!YZRTY)_lmJgS`qtd%=KmBnmzZw3!hy7t+^WSLY({>blCLqUc^ZnlKR=fH>GjX|N zj7_BH6Uw6T^ulYeeK&6B6^s{+C*+QnJt@B-u?(=wi0SpE1$x__qqOIY_MC9L+VmlQ zFGlxK2I>@SvGIpD_Oz?zeil6$SA}zdcfVLTM|d}Nj_xhmi*^WhwWP;wvtH%Fatwn8%2d`F18h`7AT=*1lNlcXQ3*0A(%Cxy~42r1rfDdvSx zt4W(1LbD6$S-!ILpRn{vX*_gmNbw2Eoi{7}1Pi8llhse6wv;z3-C#Mf)|ASAD&%wm zn8TASr&H3h5?mA*PD#VBU{dN+(iB_4q}ZpV$tiC%cv?D$Y;18qv(o7OV=`#~Ex_^%ALo*A8iOCE6F`FhPYlug8(rW%p)*>UtAnW&V{_4#3 z+wu#L!g=dL;l#dBzzhpPi8Y~++YJiNY{y_Q*bUB+?ckx!1+ftf)`dr7D7c8F6E_6p z{MlqN#VIW_uevTV4vb6#_08_M9#yP0^<@*tU)L({MiJ#cOou)7> zIT^+Du!1|^Ogj2Bkve)SxUVEua9@?#8&+`7CRT7;6*McjXJiHUjYC<%4GUIr{~zt# zhNyY4Kf?~qjNE?TmTYHRLs#@|BsFb%v8AE9bNa!yXtH8dZ$^fPvbkWaVQFMGWsHN| zb+X_%8gsHQy=z7Go0%2aFTLv-e3=AolEF@54S2$Jd04O;J3*t#84h7Imfk4qtA9_~ zxTgVn7!Q5w9u5BQ%Qmey11HRqWPA0QjlbwF7+MzUi&>{xrc?&`S()D+WM=bI47}DR z241Ia3?_uKa*-X<>1rlyYYd*Bz#})a86h*9(cD(SW~N{zbJ`JfHl1iDYV=m#id43L zi3yDgC5hawSZh`Vlc_TlhZ&dM>N48XU7mehwsbN*+N~O$M=C>cQ;kiZOTZ{Pru_%5^QFx-l z=nqYoKgn>N{6@nYkK!@=W_l= zVdrl)9{9PuF0JrXh9ajJ!^p(uWvStNVd_#N8OWKTtJd&D z`O^(!A3>bA75YBjR&$+4{yf7S@|QVXX}g8JtyT$pTdgymr{u3UjD7=SobqhewJE~e z4P*1N!|+b|dkkZ*vez)S9{UZ?6a9c;KK_o;R6Zj$d>kU6Ae}myCpF3zK%2{2GmM zaD)6>!`SuI87|Y@O`Nw+qp-J6tMNP`f39I{e1dI{-Cx1B$1rw0UY^y$UY>`bTfeM@ zZg_(*Wupw648J0Ov*E4scj|JP&kMWEmyL(Cq;Z~o5l@NYTz;$JF8Ol}&y&B%aIJpV ziSu??D(vm>wDD|`zs>L<@jqvHyZn8I_shrjhJ4{4CG2IZ687@f7!UcbF^rAOLx$JN z$9@Jm*uoI!WqU%{%eLKk_R8O37(K{6hQ}!Fe#7O$2MnVaGDsKltK^T0Fk$GVLz{o@+sXf8wdZld9vh3gIPk$=7664Bpk_ypm3hHHeE7`|M1 zh2ggd^9+Oh|Cav|!#uNm((t+B`K;lQ!dnbqExZG)Ho^U?F68jM!1E7yi|}s^^K4M2 z3;J{NdCnp2R>hxY^lte)SHc7T8w?|-(J*P7z)H(=>)VaKMt+B3_|aQL&d=npGW;L% z|I+X;+-&`Va@ z^Mt1voiW+$Ji`2>xh^TwH)Y0+(dG1Nu;^Rm*GBYkkBH9LXo%>I#!sI%Mf7H)(?@e7 zdboEahrZ~F=u3^CHuSV2rB1Fqao9-}!?lg)Q0Xp4E1ikRw2|Vc zVr;SXuv(qTT5&;{Q%PB8y)T9OIAAdG0jCf;&(D9Yfexsryvp=>%bh zG;xD;jnd_^1yjo;t2Z6aCyMy));Cdf_}#e-=I%J(dq(ToRea>DN5g!+j|h{7-x%EP zA*s}xD403oxcE(p`7Y73=%dDi=X^gl>`^=HnbpJa;h4W26NYaYz?_%;1~EA%>gh51 z&6iI-Xl~+YzbQrXn)K{dPDRamURM^$YgPY}9(njKZ>acU9nKE%si^~>ynNZ;E54|? zQgijL&hL=^QhMYH^2+6FA)L<^`QzRWd)C{8OYQXF!|QO?@(EdvF?dKFPSek*myXIA zx`N&Z`Wd=n9T4^$KXVW9i9XaEo$J+B*2)zvt8L3yg7fug4KY4uu zm&3l}>A^Y+#&l%hJwviRzFv8tUxR)J`bo+!l2Oog7#-yYujw82%G*{}DBEb|H+s%`7d@+Vt{axFXk3GA*Kb*=_@cP2#LX4`#VD?=qHYa(WNqd3 zYeHXBm;QTo7Ez-6WclXD0_7#&<>I4koafheVv={8>F+>ik9D;}pXEkpsov6|_e0*4 zIihccK1Ve2dZA}tTgi(wqxWnxz1hYGc8dr76{UM%i{a72%MC9VZZoX(JI9M`^C#f-ah`R2jwmAKJK! z%NlrJ$2?qguSe})=<9fHU9Pq`RDV1cl@s3Cnh#4>J^aln^1c4?9LGIB`9%Fz^fJ$p zp1JieRQIr-6k=*NP$3~LPjZuwq5`p16T^74EmY9|dUm>)hh5O`Q%|R4SyoKU0^=+$(bF`}7Z&p2|y6s$WT2fpk^rCq35HP&4SmW>}ZX zZne0BG-E^U-(#Awp^;oOHZ+oJ#s)UmjKu;xuNhlUAZW&(V{dSI&Dj2=8t?}FE2zQd zNmZ!~n775$TD?-6vgAb&rEj_zde%d?7edlE?FgYu=wF5Ah0x_^%Twr<5SoM(g>DX^ zD=gF=LRVU7ZV1&`Xif;#TWEF&O}0>52u-ojtPq;k$$h~4Zt7)~!%E+%!+7+@>}P&7 zrtcM(g01jnuT9gy3ML|^rs-=1SrtfSr+Hcy!}QjirUMkq8e1xRoion}!Rylu4aH6m z!5dui)DWBz(n>G2Ap~y=?UBgH2NN0l!)Zc!8Nc;l(lZCLp;(0xJ}t9StvPHsjd+~v z78W#CZMou@RaUjyIJ4_kj?~C2qT2BfGn=L*tC3eN?MjZ^NO&hN?CM&0TN0(D;iQdg zuW!2O!Z#%}&Yj51DpG2dgljp%LjLvbOKr7t#^UxnEGKkKlf07U(W6tPy&*Bm|2-(p zs(i^Y6#@+%9G@Ye14pdHAY0WGea7PX3lom!#Cvn%O`hLn1Rt3)6w49w9uD;L(tDS3Ax`oxvjH3VOG1psk41Sha_B(^`M}%}q@?9;Wrj~~PceRK!HG6(n zLKH~ofnrfh1CMD4t5|l12%}VIfV3^vc_Up5J5wQ_`Eyf?W-HLyb!$sFUSttNBIply zE=q+1O2TSfq6K_>EBk7~7^JH&eP4cnhAoRl# zDezu|0&n(YGy`+l6SPmh_KcSj-RbP{uYKFmEDZaE50`e`soE0XHa{ORO?y~tH*~Q{ z50CA{jXe)@XWbW0x6p3dXNlzku?U_gh*n`9hV8b8mEI&JJ;7I{;m6SqL2XbxgxLAJ zPdHo*Y_fgYGwcUm9d_`zh3Cb8=|Ti=Hu9XmaD>gL>;iac*>t|n~t zKUmGI?5OKm(m|e@8$UI7+0@({EmBbom#~jJdbh8teI!si-r7c8%9xk>EY3|cr>wq%-)t5Df{5_7|oZXcpj4AX%Q41vnz79&S(NgsL` zJZ6Q8HBIL~gyUiuKW8T)m0(PAA`Ed!XoQr;b7~sfygnR}p-tzDN6qi<)~M-5Q0QzHpjBZfbH~La%zb>;doY521%!6Ui@EMpqPtANS1V6aW39 z@U$ZS?xOhcNNhCHhsWzEyvr~i@t?LZzX|B!zCmFyzX^obT09>7-`3Tww>5qvh#yu| z9)j$t%Wnqpw<_$8^!k*UcZBB@r5~J+P4fG2QGBu9?`uW;|6UZXQFu5XO6B<0RbjY6 zczAfBNpyTG4AWld>nxSeiwn3_K9}!9Iak>Cq3jZd=N`2OeF0uCf0g0Y^0|iF59%6W z_Ho6n)8+h62zz;+6!!9LGoHQjpEJB&K9`qghp?AtkMU5ReTLDQ*>CuOd@fI$Qkj?#9r9h@7oC<3Mt?&7 zR>RO;f0wiq)xO?_d?WWZY=F*3U%5u;hMR>c!y@^!47bYX^8NME>-GKhJB$Z@?lscV zr|8=Hc-|-MKKWeU=KF=c%~Rq-Cj4ArR;I|$+nfbDZ*vyjynR@A^Y&pm z%WedFFuez+bM5eyovCpMWdnSLt$H&oRW=58qhhfqyzYDi>}BJce71r(1rk zD~!Id^LIr2%OZZ#N(Y3-Wj6PHNgNENK{D|Rp;lDPFPWIm!{x9LL87@&7c&;Nabbx3OBM04P>JR>zeAkVBRrtL||E>JLFwCA8 zA2*CX^XCi?68?(eVZvdbX34A+{-M!F3;)#cdBVRoe35WY7iHjCawu4FYvrF}be=;= z1J8BxFEf0Te4aC*^Ni{HG`~$49Z%?ND&zY!w+nY0{T=cjG~6lwal<@se$Ft@oSO|V zlfT_C<@^y?EM&ed&@XA0z^)ur?oSPn%LV9LeIm60u8f z_%Ogq{t<84n|uP0kj8}zZ%rM%fp4Fh-#5&>X~}{G?B{#f9em@G_o???(Dv?9tzPGr zz2UpNhELvgo}0`^PS8{n9ODbj?-q_Q8UyY$bb}kO|BfM)>3xUaOn#~v!o=}-JzAH` z7EH~MtbG7;9=And$3$_C%?F|kJZ_WXB64cSm{h7t1oG8wkk9viVbav-!hKf^YoZ1q zj%&90&etL(ir)0StHcbyyWg3eo`*edbrByo_zY)~?`40l_#6|xPd9n1eCk1S6G!{q zT_kUYikGnx$ zxqS4!byocm>w8~%>4h~_!5v=TdxO10GX@W-@155*+?nXM9Y)ts!gjN#?m;?;k&cw> zlCk$K`guW*Tp0akbe3bi@mQbl4Cz+&rpxE@(C0jyP9J4+y|S>kBYRo)C|g07i@F?@ zepr!id{%m5Tf;uVrk~b}e%@mP3i@d1j%B|38|h|VwuQQ`l)mHSL6>bo=Q*P=es+X( zH%0rZ_Vpz$dm%iczf1n=maoE-Rv*VBj(EI>+i}pT!QF~+- z>+G)}u0lGg^s#jAU4L}6@g~oyCEDotn znSNsko-j`39adVGs5}llXM|}%_8{lZ8G)psc}YPva#&tc2&Nv@4}S7n*_SdT>V26B z8XUOvRp9}lUrA<4LP(`~MAr{qrsM{BIbN!9nFllB`3QwcehgE*{h=@!0+_L)FjCF$(QkV>ZkdG85Lm)_#!ej{WfdPfd zLO=?Wg@6<$3jrxi76MY3ECi%5SqMmBvJjBMWC(=%NMW)NkiujkAce^g2(2T9$wJKi znYvU7pDhb*Keeoc<}KkvOfFJ}3=PdTp&@msnUoRZD2I!9Spmphkn~G$yF=x|!F}?n&sT z_Rb}@1vNv3uSqP@g|JQUnm^~(PVEDBkb2*|g-aH9rf!?RU`bcI^!eK7EL<>G;m%aY z!i9@W+iwx-gva+Cle}y8rNcK?6JVG{nK9&;5aTc}oN<_Gs5smvp5KQ~pE{(MO*zNr zH|6wQG)q@bm(Eh6q?a49QA%CUM6}i(AHMUXDC^${KcW%t3r%7Gtw6d;T{{fk?C!20r_F*>e{E0U1JSkhL zZ3LD3xT(2IR-m19_0-&?sks|gUzqqo={l)F^o zpwO7h-50iT9H8Qqs{qm_R4sxQ7Al5pD|wpfdr8F&I6%5q#(6=|AUjh{c&>Q0FX5TA zA6N};8fK-^15*?B*KVMnyO$j)v;W8IGA!s{mHi}_y8#utf$9eI$!y0|?ddU0OqGxs3j3*ZBTxl;Rg9!&?}TrQ-qrh&yvsOduO!@``%fU*}s{0K)3bF)zGy@iCd$~zl}dB zOkR8BKV|r7`CKk%ld#Kq4tkmX$!*u=-;H+(yPUnkp7v#UtPK01YYh)~K$m|{<^{#S zCzlEP_hi>^q8*yyv38pUkKqns@?9o>k>M`+_ZV(e+%94NZoEg>zZ<`7Jm@o_$Ap|o zx)=vwzVC5)+A?8Ji@p*(q-`)vUVL|h&bP`(46l>F!EmF-5pmvkPYQeAZGvv!s5e75 z{JbzS59r!uc#nK8Z_mBL-kz@aL|$cj1Sf5^e7<>s%jI)<+6rM$JH~iOJJB%TsrYt7 z+B*4Mp0+{Q(>56oY567v|9biN7+xlSo#ChCKN(>e>IVL?O1s_g4*AdP^6|Dy*vH!e z=r*2t&-L+KF6?FF`<0gsohctp0)-a8>R?OY*NU%stv*_&4&K3^T5om&l9n^X-P2FBcm= zLm0y@c*Y5@HhhKfhYe2^{wu?LpZ|hkzRzzq%=h_k8|M4`4-E5t{wIdHclR0Q`#e8x zp$9`b+I@c-oZ_Ulz9{|4I(R@wO8KHKnr%3oyom-6p5%y;qkgLUz{`jF9| zmCxC;$YCC0t^*Gd{<7hdgr75fn(z+{lNWOu{CtPs2i7%L*MA%RTk@IH;5kSBNW)|0 zGv7g{Y_(wd{HFW9WPIbFZan1mmWV%mhZl|C{6$88N#VOA{`W`xA2Ce1xE1}|btPCd z+!$R>=Xt=}sy3oeG&*%`i0F+@S9!v{rh6XOtP44m^Ua2#4<24ItlxnCWdjElUd;MF zls5iIZLey{>zuv5_40k%zDmcRa_uAZF@JhK5!x!Y<-#$|@-_48L!fR>t zVcFk;iqC@0OABwdwC9nyF&g(826=b$$YjoNf}(?Co&_^kpKWlmS z@=!gGioj|bLy9=&cped4wqRem7!ywb~o4-R@aM<>UUz(m=z_Q2)~Y$isJe-xQ9&G0zeo`N4873Nbcd_Wnzeiet71%HcDj89Qqa< z-}@0;e!SBE@cF$(|MaGp!T505f~oKEFLEANC0aZt_Zg3u!};n(kH_Q=g{yQC?{kig zNo^f@G>Hm`Qp*+Tpu5{9-VXpT^4Z|uIMo{+b zbnfHEidy zbC6>b4&R}9Uf(1Ca>G2w%rMOR+MgPx;VQs3SH#cRmq0g}#m~G&zYKHRXD_*>r8DSR z_A(md$H(w=d+48%n7t3ZM*Z4&{~q(N%|}$fxCcAbW}g<#T^KkD@Vo)`-eo?e|J)_h zSHk0Ih+Cv9UVrttDWW@u@9VmFR&?iaSBl`WiQB5ecFWgeRiG2cy}~#kO^q(xnF^fj zLKFsaooK%Ey+M8ZsA%q-?*giNK&VQ?is&t3^twygW==T-&wCn44yH`1`hlCvI0=W*E z@0Z4Yf0;p*UtK00xZj6d*R`vYJf1U-RVL+HiQbgTjP6`odR<;-FE6@YeaY`lhp9G| z9fER@c19bhpM_L5QC=#^D=%qK9l0h`;n}7?6UTsb8s(&cqxBecsRRuoe&E0>1qb(h zcybM;A$et_-u0Nm3A;TXvQl5vSWZTFUr$j@;s}GBFESRAG=F!N;st}qkWTw!KAF*;W_qbt0;ykS0D=ZSuYYCX)=ri6E0C&E;f0o^oaAw^q>K_tAB7n=RZ@m}Q}UMB zEMPq4`S^0UwWC&tyj00B8YGd}Bw*YpAtRsSq#h|M3n^L)DNgN?;?y1~PA5(|&J%m8 zq$;EjHI<3Tas85LkEp&+{P=kbZ)+bvxAWrhZHwB+U)yk1%bnWdX#AZE7vI{ssBKRB z_|Dtf7HeCfs_KP{Z#j2-15X7hJr}gIOVzP#B-NLCOOW-tx0h16^e{Y=GPlgk@1~y* zhmEBQAr55aDLPNVLWE;jsa^;F7E3kb`0meeGxhas%?)KgLyXg~CK`viJ>qby!e7%> z5>CwP^;vxW0<8v&8$WaLobX8A``M;yx^eUPH3oE!n-k`#l9E*N%sw)A(txtPVUMBA zGr3f0+0tAkkML}gGe}?KGxF1X)=!n)c~FeB15!#*s&DkebCrqSgeO9EK#6;Q5!kDG zxjX!OfIU20f~+R3*k!|0Nr95pZ1Y$l7}loVQ562yqHuLl_yG&kXS_$eP5wSztrlkP zC5{P@crBf!*6E@T3IC~l96uUE^?!_f|0Yac{!Lf|I{$5ODRg_Kc@8>@adPD4-=+EH zP54Q}ygPl-@Gs!7yo`GK|h_h0^!--Z&2c!4=5{s2VLCW(UvSx=BMPsso4P)mM#k~sPW5Xco$86pYkFSyT6&qu`Y*x zPtB)^&+;h zqB{+t;JDQsLs(aq%s1u23~A!R?}O4RioA&mXGz8B9Fs+qP2l@J3CwxiG=&`#)uPNc zMg)gfE6!!Z$IImoMN$ar=H+8egfum}a3dA*T^FJ-kc;p2G2c%$%`*?UbG}Xy!0z7b z4QT|AV}5W<6nk~dFdjTF`#MMd& z{e(Q8q`h5M3dirub>brqKAg+jFHC>CTgL;wB8dlj8VvfP&n<_2U#`9Qk|Ta!uCaMP zxf`nW8+PdT<>j*Ps(-lhIc#hCdN=I#J=yj__xIz2Y>pziY3#^kH-^oPnqfEZp*q9i zV{zWRv+6vD@ZLIl)!J{W&2|M|(K6x}?Q5Q%ciX@#J3;Kvf~-hB@4!b@7hC679lkSJ zZLwQ+ZP@^H#p5 zx=-dD8MSv`eVbAH`Z+ef#xPp8Zp&E1Xx#tp-Ra8bWVwcQb|V-%Jm{3}edvQZkZZ1fwa%`*yiQi+vRS?@~|{d+D= z4CuKEF|enk#I$NqPf5XUt0yVpOWm$pA(^H6TEci)lTMg-E>-KM$Jr8wuy$G~&@WBs zfzS$Lzl2aissgnvq2}%uwPcz8m3~0~aG4~gUt$kbCrYv=knRr$KWt$)IwO`t>~D(+ z=@1%VFZ$_W#3?kFH2F|#2n`R}4FosoGHKP}_mdw5BaBz_MKGl&Q2yliHHyD1AAfm> z4=W=t!`}gW`f3#|Nq;r*;!fz-1@7bfWz`lR{Ac7CKaa@}qN_!g6ye?70~2IIp&zG~ zPV;%}%C9x>lK-Y)Uz56}T_4nzEN+>zaEU&x-O<*O(!xgz)Q~=v(C4!gMIh9)%j6b!d61Rgzx2LbKlx=cg(xkZiXnhP z1E;b_>_FKZuxWDn)SULkJ-PHfVgF-onp}oGLXti$o>bZ2bErb-JFj@R{-lsZ5L!;vbif ztJ6jJ4g%(o_hG~QaIlzv`A-|(B%eA#hv(%8^PcT%E$FcNTFdhheOE+B7e16h{&d4LE7erA|; zonL_^pS&1r@YKm?-3fZD{Gmo?e`EBQ;d!t8bHL(ZyiPFspUA)5Fg(|QDZj28jov2z zt%ezEu1o!(a0TVjdn~R}S4b;=4A|(^Mz51!8_`3*C?D$55YZdKqEnZqh~8{;%0D-v z&oeq@zTUC?6Z(}8>U)hRzm^mI<{tFx>c8sa3hO8V+KhZsZ#yi6&fW_^%FX3Tf z{^HwvD7=PMB7bt|<&hxKa&3}L=0W>B^;D6Im!A62Ye*`<<48c^XRNPvATJX79!Kgb z)EC)^dB5&C))L)0WSoGx*Kv#kp1<8`hz3`@CbUXx739Hm0y}(6A!9@b%7 diff --git a/public/rtos/code/smartos_code/Debug/Src/SmartOS.s.d b/public/rtos/code/smartos_code/Debug/Src/SmartOS.s.d deleted file mode 100644 index 4d4da74..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/SmartOS.s.d +++ /dev/null @@ -1,88 +0,0 @@ -Src/SmartOS.s.o: ../Src/SmartOS.s.c ../inc/timers.h ../inc/ucos_ii.h \ - ../inc/os_cfg.h ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h \ - ../inc/SmartOS.h ../inc/mailbox.h ../inc/sem.h ../inc/inter_vector.h - -../inc/timers.h: - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: - -../inc/SmartOS.h: - -../inc/mailbox.h: - -../inc/sem.h: - -../inc/inter_vector.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/alg.s.d b/public/rtos/code/smartos_code/Debug/Src/alg.s.d deleted file mode 100644 index 115a6dc..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/alg.s.d +++ /dev/null @@ -1,3 +0,0 @@ -Src/alg.s.o: ../Src/alg.s.c ../inc/alg.h - -../inc/alg.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/func_lib_ape.d b/public/rtos/code/smartos_code/Debug/Src/func_lib_ape.d deleted file mode 100644 index 9c794aa..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/func_lib_ape.d +++ /dev/null @@ -1,33 +0,0 @@ -Src/func_lib_ape.o: ../Src/func_lib_ape.c ../inc/ucp_sfr_c.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h \ - ../inc/ucp_param.h ../Src/func_lib_ape.h ../inc/pet_ctrl.h \ - ../inc/ucp_js_ctrl.h ../inc/csu.h - -../inc/ucp_sfr_c.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h: - -../inc/ucp_param.h: - -../Src/func_lib_ape.h: - -../inc/pet_ctrl.h: - -../inc/ucp_js_ctrl.h: - -../inc/csu.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/inter_vector.s.d b/public/rtos/code/smartos_code/Debug/Src/inter_vector.s.d deleted file mode 100644 index 8761ee9..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/inter_vector.s.d +++ /dev/null @@ -1,120 +0,0 @@ -Src/inter_vector.s.o: ../Src/inter_vector.s.c \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h ../inc/alg.h \ - ../inc/inter_vector.h ../inc/csu.h ../inc/pet_ctrl.h \ - ../inc/ucp_sfr_c.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h \ - ../inc/ucp_param.h ../inc/ucp_js_ctrl.h ../inc/dw_apb_timers.h \ - ../inc/type_define.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/math.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/tick.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/malloc.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/malloc.h \ - ../inc/gs_que.h ../inc/error.h ../inc/debug.h - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/alg.h: - -../inc/inter_vector.h: - -../inc/csu.h: - -../inc/pet_ctrl.h: - -../inc/ucp_sfr_c.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdint.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_intsup.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_stdint.h: - -../inc/ucp_param.h: - -../inc/ucp_js_ctrl.h: - -../inc/dw_apb_timers.h: - -../inc/type_define.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/math.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/tick.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/malloc.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/malloc.h: - -../inc/gs_que.h: - -../inc/error.h: - -../inc/debug.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/mailbox.s.d b/public/rtos/code/smartos_code/Debug/Src/mailbox.s.d deleted file mode 100644 index 4445317..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/mailbox.s.d +++ /dev/null @@ -1,5 +0,0 @@ -Src/mailbox.s.o: ../Src/mailbox.s.c ../inc/ucp_param.h ../inc/mailbox.h - -../inc/ucp_param.h: - -../inc/mailbox.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_core.s.d b/public/rtos/code/smartos_code/Debug/Src/os_core.s.d deleted file mode 100644 index 4497f2a..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_core.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_core.s.o: ../Src/os_core.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_cpu_c.s.d b/public/rtos/code/smartos_code/Debug/Src/os_cpu_c.s.d deleted file mode 100644 index 0f410eb..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_cpu_c.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_cpu_c.s.o: ../Src/os_cpu_c.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_dbg_r.s.d b/public/rtos/code/smartos_code/Debug/Src/os_dbg_r.s.d deleted file mode 100644 index 3f1dd4a..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_dbg_r.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_dbg_r.s.o: ../Src/os_dbg_r.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_flag.s.d b/public/rtos/code/smartos_code/Debug/Src/os_flag.s.d deleted file mode 100644 index 385340f..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_flag.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_flag.s.o: ../Src/os_flag.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_mbox.s.d b/public/rtos/code/smartos_code/Debug/Src/os_mbox.s.d deleted file mode 100644 index f111a17..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_mbox.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_mbox.s.o: ../Src/os_mbox.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_mem.s.d b/public/rtos/code/smartos_code/Debug/Src/os_mem.s.d deleted file mode 100644 index f5a4641..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_mem.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_mem.s.o: ../Src/os_mem.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_mutex.s.d b/public/rtos/code/smartos_code/Debug/Src/os_mutex.s.d deleted file mode 100644 index c69f02c..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_mutex.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_mutex.s.o: ../Src/os_mutex.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_q.s.d b/public/rtos/code/smartos_code/Debug/Src/os_q.s.d deleted file mode 100644 index 1494a99..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_q.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_q.s.o: ../Src/os_q.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_sem.s.d b/public/rtos/code/smartos_code/Debug/Src/os_sem.s.d deleted file mode 100644 index 3408089..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_sem.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_sem.s.o: ../Src/os_sem.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_task.s.d b/public/rtos/code/smartos_code/Debug/Src/os_task.s.d deleted file mode 100644 index c721262..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_task.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_task.s.o: ../Src/os_task.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_time.s.d b/public/rtos/code/smartos_code/Debug/Src/os_time.s.d deleted file mode 100644 index 15d490a..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_time.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_time.s.o: ../Src/os_time.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_tmr.s.d b/public/rtos/code/smartos_code/Debug/Src/os_tmr.s.d deleted file mode 100644 index fdc944f..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_tmr.s.d +++ /dev/null @@ -1,77 +0,0 @@ -Src/os_tmr.s.o: ../Src/os_tmr.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/os_ucp.s.d b/public/rtos/code/smartos_code/Debug/Src/os_ucp.s.d deleted file mode 100644 index 4673bf7..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/os_ucp.s.d +++ /dev/null @@ -1,76 +0,0 @@ -Src/os_ucp.s.o: ../Src/os_ucp.s.c ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h \ - ../inc/ucos_ii.h ../inc/os_cfg.h ../inc/os_cpu.h - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/sem.s.d b/public/rtos/code/smartos_code/Debug/Src/sem.s.d deleted file mode 100644 index cb3ccd0..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/sem.s.d +++ /dev/null @@ -1,80 +0,0 @@ -Src/sem.s.o: ../Src/sem.s.c ../inc/ucos_ii.h ../inc/os_cfg.h \ - ../inc/os_cpu.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - ../inc/os_ucp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h \ - ../inc/sem.h - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -../inc/os_ucp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: - -../inc/sem.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/subdir.mk b/public/rtos/code/smartos_code/Debug/Src/subdir.mk deleted file mode 100644 index c9974ed..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/subdir.mk +++ /dev/null @@ -1,95 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -ASM_SRCS += \ -../Src/__ucps2_interrupt.s.asm - -C_SRCS += \ -../Src/SmartOS.s.c \ -../Src/alg.s.c \ -../Src/func_lib_ape.c \ -../Src/inter_vector.s.c \ -../Src/mailbox.s.c \ -../Src/os_core.s.c \ -../Src/os_cpu_c.s.c \ -../Src/os_dbg_r.s.c \ -../Src/os_flag.s.c \ -../Src/os_mbox.s.c \ -../Src/os_mem.s.c \ -../Src/os_mutex.s.c \ -../Src/os_q.s.c \ -../Src/os_sem.s.c \ -../Src/os_task.s.c \ -../Src/os_time.s.c \ -../Src/os_tmr.s.c \ -../Src/os_ucp.s.c \ -../Src/sem.s.c \ -../Src/timer.s.c \ -../Src/ucos_ii.s.c - -OBJS += \ -./Src/SmartOS.s.o \ -./Src/__ucps2_interrupt.s.o \ -./Src/alg.s.o \ -./Src/func_lib_ape.o \ -./Src/inter_vector.s.o \ -./Src/mailbox.s.o \ -./Src/os_core.s.o \ -./Src/os_cpu_c.s.o \ -./Src/os_dbg_r.s.o \ -./Src/os_flag.s.o \ -./Src/os_mbox.s.o \ -./Src/os_mem.s.o \ -./Src/os_mutex.s.o \ -./Src/os_q.s.o \ -./Src/os_sem.s.o \ -./Src/os_task.s.o \ -./Src/os_time.s.o \ -./Src/os_tmr.s.o \ -./Src/os_ucp.s.o \ -./Src/sem.s.o \ -./Src/timer.s.o \ -./Src/ucos_ii.s.o - -C_DEPS += \ -./Src/SmartOS.s.d \ -./Src/alg.s.d \ -./Src/func_lib_ape.d \ -./Src/inter_vector.s.d \ -./Src/mailbox.s.d \ -./Src/os_core.s.d \ -./Src/os_cpu_c.s.d \ -./Src/os_dbg_r.s.d \ -./Src/os_flag.s.d \ -./Src/os_mbox.s.d \ -./Src/os_mem.s.d \ -./Src/os_mutex.s.d \ -./Src/os_q.s.d \ -./Src/os_sem.s.d \ -./Src/os_task.s.d \ -./Src/os_time.s.d \ -./Src/os_tmr.s.d \ -./Src/os_ucp.s.d \ -./Src/sem.s.d \ -./Src/timer.s.d \ -./Src/ucos_ii.s.d - - -# Each subdirectory must supply rules for building sources it contributes -Src/%.o: ../Src/%.c - @echo 'Building file: $<' - @echo 'Invoking: Clang' - /home/ds5/ape/IDE_wang/toolchain/bin/ucp2/clang --target=ucps2 -I../inc -I/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib -I/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm -O0 -g -Wno-constant-conversion -nostdlibinc -MMD -MP -o "$@" -c "$<" - @echo 'Finished building: $<' - @echo ' ' - -Src/__ucps2_interrupt.s.o: ../Src/__ucps2_interrupt.s.asm - @echo 'Building file: $<' - @echo 'Invoking: llvm-mc Assembler' - $(MaPU_TC_HOME)/bin/ucp2/llvm-mc -arch=ucps2 -g -I../inc -filetype=obj -o "$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - - diff --git a/public/rtos/code/smartos_code/Debug/Src/timer.s.d b/public/rtos/code/smartos_code/Debug/Src/timer.s.d deleted file mode 100644 index ef27c47..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/timer.s.d +++ /dev/null @@ -1,100 +0,0 @@ -Src/timer.s.o: ../Src/timer.s.c ../inc/type_define.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/math.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/tick.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/malloc.h \ - /home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/malloc.h \ - ../inc/dw_apb_timers.h ../inc/ucp_param.h ../inc/inter_vector.h \ - ../inc/ucos_ii.h ../inc/os_cfg.h ../inc/os_cpu.h ../inc/os_ucp.h - -../inc/type_define.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/ieeefp.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_ansi.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/newlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/_newlib_version.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/config.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/features.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/stddef.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/reent.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/__stddef_max_align_t.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/_default_types.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/lock.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/cdefs.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/stdlib.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/alloca.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/math.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/strings.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/sys/string.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2-intrin.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucp2.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/ucps2.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/llvm/tick.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/malloc.h: - -/home/ds5/ape/IDE_wang/toolchain/include/ucp2/newlib/machine/malloc.h: - -../inc/dw_apb_timers.h: - -../inc/ucp_param.h: - -../inc/inter_vector.h: - -../inc/ucos_ii.h: - -../inc/os_cfg.h: - -../inc/os_cpu.h: - -../inc/os_ucp.h: diff --git a/public/rtos/code/smartos_code/Debug/Src/ucos_ii.s.d b/public/rtos/code/smartos_code/Debug/Src/ucos_ii.s.d deleted file mode 100644 index 3d62df4..0000000 --- a/public/rtos/code/smartos_code/Debug/Src/ucos_ii.s.d +++ /dev/null @@ -1 +0,0 @@ -Src/ucos_ii.s.o: ../Src/ucos_ii.s.c diff --git a/public/rtos/code/smartos_code/Debug/makefile b/public/rtos/code/smartos_code/Debug/makefile deleted file mode 100644 index f186fdb..0000000 --- a/public/rtos/code/smartos_code/Debug/makefile +++ /dev/null @@ -1,43 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - --include ../makefile.init - -RM := find . -path './build' -prune -o -print -a -type f -not -name '*.mk' -a -not -name '*.ld' -a -not -name 'makefile' -a -not -name 'genhex.sh' -delete & rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include Src/subdir.mk --include subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: libsmartos.a - -# Tool invocations -libsmartos.a: $(OBJS) - @echo 'Building target: $@' - @echo 'Invoking: GNU archiver' - ar rcs "libsmartos.a" $(USER_OBJS) $(OBJS) $(LIBS) - @echo 'Finished building target: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) $(LIB)$(OBJS)$(C_DEPS) libsmartos.a - -@echo ' ' - -.PHONY: all clean dependents - --include ../makefile.targets diff --git a/public/rtos/code/smartos_code/Debug/objects.mk b/public/rtos/code/smartos_code/Debug/objects.mk deleted file mode 100644 index 742c2da..0000000 --- a/public/rtos/code/smartos_code/Debug/objects.mk +++ /dev/null @@ -1,8 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -USER_OBJS := - -LIBS := - diff --git a/public/rtos/code/smartos_code/Debug/sources.mk b/public/rtos/code/smartos_code/Debug/sources.mk deleted file mode 100644 index bcdab81..0000000 --- a/public/rtos/code/smartos_code/Debug/sources.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -ASM_SRCS := -C_SRCS := -O_SRCS := -LIB := -OBJS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Src \ - diff --git a/public/rtos/code/smartos_code/Release/sources.mk b/public/rtos/code/smartos_code/Release/sources.mk deleted file mode 100644 index bcdab81..0000000 --- a/public/rtos/code/smartos_code/Release/sources.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -ASM_SRCS := -C_SRCS := -O_SRCS := -LIB := -OBJS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Src \ - diff --git a/public/rtos/code/smartos_code/Release/makefile b/public/rtos/code/smartos_code/lib/makefile similarity index 100% rename from public/rtos/code/smartos_code/Release/makefile rename to public/rtos/code/smartos_code/lib/makefile diff --git a/public/rtos/code/smartos_code/Release/objects.mk b/public/rtos/code/smartos_code/lib/objects.mk similarity index 100% rename from public/rtos/code/smartos_code/Release/objects.mk rename to public/rtos/code/smartos_code/lib/objects.mk diff --git a/public/rtos/code/interrupt_code/interrupt/Debug/sources.mk b/public/rtos/code/smartos_code/lib/sources.mk similarity index 100% rename from public/rtos/code/interrupt_code/interrupt/Debug/sources.mk rename to public/rtos/code/smartos_code/lib/sources.mk diff --git a/public/rtos/code/smartos_code/Release/subdir.mk b/public/rtos/code/smartos_code/lib/subdir.mk similarity index 100% rename from public/rtos/code/smartos_code/Release/subdir.mk rename to public/rtos/code/smartos_code/lib/subdir.mk diff --git a/public/rtos/code/spinlock_code/Src/spinlock.s.c b/public/rtos/code/spinlock_code/Src/spinlock.s.c index d905e26..dd55d7d 100644 --- a/public/rtos/code/spinlock_code/Src/spinlock.s.c +++ b/public/rtos/code/spinlock_code/Src/spinlock.s.c @@ -1,191 +1,315 @@ #include #include "spinlock.h" -//#define OSP_APE_SPAIN_LOCK_ADDR 0x931FF00 #define OSP_APE_SPAIN_LOCK_ADDR (0x931FF00-0x400) #define SPINLOCK_BIT_MAP_ADDR (0x931fb40) +#define DEBUG_NR 16 -#define LOCK_BIND_FLAG_ADDR 0x931ff60 +unsigned int spin_debug_switch = 0; +unsigned int g_unspinlock_loop = 0; +unsigned int g_ddr_spinlock_loop = 0; -#define FREE_VALUE 0x45 typedef unsigned int uint32_t; -#define spin_do_write(a,v) __ucps2_store_ext_mem((void *)a, (uint32_t)v, f_W) -#define spin_do_read(ptr) __ucps2_load_ext_mem_v((char*)ptr, f_W) +#define spin_do_write(a,v) __ucps2_store_ext_mem((void *)(a), (uint32_t)v, f_W) +#define spin_do_read(ptr) __ucps2_load_ext_mem_v((char*)(ptr), f_W) -int spin_debug_switch = 0; - -int g_spinlock_count = 0; -int g_unspinlock_count = 0; -int g_spinlock_loop = 0; +unsigned int g_spinlock_count[DEBUG_NR] = {0}; +unsigned int g_unspinlock_count[DEBUG_NR] = {0}; +unsigned int g_spinlock_loop[DEBUG_NR] = {0}; +unsigned int g_spin_count[DEBUG_NR] = {0}; unsigned char *use_flag = (char*)SPINLOCK_BIT_MAP_ADDR; spin_debug_t *spin_debug_info; -int test_bit(void *s,unsigned int index) +static int test_bit(void *s,unsigned int index) { - unsigned char *f_bit = s; - f_bit += index >>3; - return ((*f_bit&(1 <<((index%8)))) != 0); + unsigned char *f_bit = s; + f_bit += index >>3; + return ((*f_bit&(1 <<((index%8)))) != 0); } -void set_bit(void *s,unsigned int index) +static void set_bit(void *s,unsigned int index) { - unsigned char *f_bit = s; - f_bit += index >> 3; - *f_bit |= 1<<(index%8); + unsigned char *f_bit = s; + f_bit += index >> 3; + *f_bit |= 1<<(index%8); } -void clear_bit(void *s,unsigned int index) +static void clear_bit(void *s,unsigned int index) { - unsigned char *f_bit = s; - f_bit += index >> 3; - *f_bit &= ~(1 <<(index%8)); + unsigned char *f_bit = s; + f_bit += index >> 3; + *f_bit &= ~(1 <<(index%8)); } -int smart_spin_debug_init(unsigned int debug_base_addr, int len_bytes) +/* + 函数:smart_spin_debug_init + 参数:lock_idx + 参数范围:1--15 +*/ + +int smart_spin_debug_init(int lock_idx,unsigned int debug_base_addr, int len_bytes) { - if(debug_base_addr <= 0x10000000) - { - return -1; - } - if (len_bytes < 12) - { - return -2; - } + if((lock_idx < 1)||(lock_idx > 15)) + { + return -1; + } + if(debug_base_addr <= 0x10000000) + { + return -1; + } + if (len_bytes < 16) + { + return -2; + } spin_debug_switch = 1; - spin_debug_info = (spin_debug_t *)debug_base_addr; + spin_debug_info = (spin_debug_t *)debug_base_addr; - return 0; + return 0; } void spin_debug(void * addr , uint32_t v) { - if(spin_debug_switch == 1) - { - spin_do_write(addr, v); - } + if(spin_debug_switch == 1) + { + spin_do_write(addr, v); + __ucps2_synch(0); + } } int smart_spinlock_init(int lock_index) { - int i; - if((lock_index < 0)||(lock_index > 15)) - { - return -1; - } - if(test_bit(use_flag,lock_index)) - { - return -2; // - } - set_bit(use_flag,lock_index); - *(volatile unsigned int *)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4) = 0; - - return 0; -/* - if(*(volatile unsigned int *)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4) == 0) - { - return 0; - } - else if(*(volatile unsigned int *)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4) > 0) - { - return 1; - } - return -1; - */ + int i; + if((lock_index < 1)||(lock_index > 15)) + { + return -1; + } + if(test_bit(use_flag,lock_index)) + { + return -2; // + } + set_bit(use_flag,lock_index); + *(volatile unsigned int *)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4) = 0; + + return 0; + } void smart_spinlock(int lock_index) { - spinlock_t lockval; - spinlock_t *lock; - int ret; - int owner; - int next; - if (lock_index >= SLOCK_MAX) - { - return; - } - else - { - lock = (spinlock_t*)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4); - } - - while (1) - { - lockval.slock = __ucps2_atomicld((int *)lock, f_W); - next = ((lockval.slock >> 16) & 0x0000ffff); - owner = next; - next++; - lockval.slock &=0x0000ffff; - lockval.slock |= ((next & 0xffff) << 16); - ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); - if (1 == ret) - { - break; - } - else - { - - } - } - do - { - lockval.slock = __ucps2_atomicld((int *)lock, f_W); - g_spinlock_loop++; - spin_debug(&(spin_debug_info->spin_per_ape.spinlock_loop) , g_spinlock_loop); - } while (owner != ((lockval.slock & 0x0000ffff))); - g_spinlock_loop = 0; - g_spinlock_count++; - spin_debug(&(spin_debug_info->spin_per_ape.spinlock_count) , g_spinlock_count); + spinlock_t lockval; + spinlock_t *lock; + int ret; + int owner; + int next; + if (lock_index > SLOCK_MAX) + { + return; + } + else + { + lock = (spinlock_t*)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4); + } + + while (1) + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + next = ((lockval.slock >> 16) & 0x0000ffff); + owner = next; + next++; + lockval.slock &=0x0000ffff; + lockval.slock |= ((next & 0xffff) << 16); + ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); + if (1 == ret) + { + break; + } + else + { + g_spin_count[lock_index]++; + spin_debug(&(spin_debug_info->spin_per_ape.g_spin_count) , g_spin_count[lock_index]); + } + } + do + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + g_spinlock_loop[lock_index]++; + spin_debug(&(spin_debug_info->spin_per_ape.spinlock_loop) , g_spinlock_loop[lock_index]); + } while (owner != ((lockval.slock & 0x0000ffff))); + g_spinlock_count[lock_index]++; + spin_debug(&(spin_debug_info->spin_per_ape.spinlock_count) , g_spinlock_count[lock_index]); } void smart_spinunlock(int lock_index) { - spinlock_t lockval; - int ret; - int atomfail_unlock = 0; - spinlock_t * lock; - unsigned int temp_owner = 0; - if (lock_index >= SLOCK_MAX) - { - return; - } - else - { - lock = (spinlock_t*)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4); - } - g_unspinlock_count++; - spin_debug(&(spin_debug_info->spin_per_ape.unspinlock_count) , g_unspinlock_count); - while (1) - { - lockval.slock = __ucps2_atomicld((int *)lock, f_W); - temp_owner = (lockval.slock & 0x0000ffff); - temp_owner ++; - lockval.slock &= 0xffff0000; - lockval.slock |= (temp_owner & 0x0000ffff); - ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); - if (1 == ret) - { - break; - } - else - { - - } - } + spinlock_t lockval; + int ret; + int atomfail_unlock = 0; + spinlock_t * lock; + unsigned int temp_owner = 0; + if (lock_index > SLOCK_MAX) + { + return; + } + else + { + lock = (spinlock_t*)(OSP_APE_SPAIN_LOCK_ADDR+lock_index*4); + } + while (1) + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + temp_owner = (lockval.slock & 0x0000ffff); + temp_owner ++; + lockval.slock &= 0xffff0000; + lockval.slock |= (temp_owner & 0x0000ffff); + ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); + if (1 == ret) + { + break; + } + else + { + // g_unspinlock_loop++; + // spin_debug(&(spin_debug_info->spin_per_ape.unspinlock_loop) , g_unspinlock_loop); + } + } + g_unspinlock_count[lock_index]++; + spin_debug(&(spin_debug_info->spin_per_ape.unspinlock_count) , g_unspinlock_count[lock_index]); } +/* + 参数:lock_idx + 参数范围:1--15 +*/ +int smart_get_spin_loop_cnt(int lock_idx) +{ + return g_spinlock_loop[lock_idx]; +} + +/* + 参数:lock_idx + 参数范围:1--15 +*/ + +int smart_get_spin_cnt(int lock_idx) +{ + return g_spin_count[lock_idx]; +} + +/* + 参数:lock_idx + 参数范围:1--15 +*/ + +int smart_get_spinlock_cnt(int lock_idx) +{ + return g_spinlock_count[lock_idx]; +} + +/* + 参数:lock_idx + 参数范围:1--15 +*/ + +int smart_get_unspinlock_cnt(int lock_idx) +{ + return g_unspinlock_count[lock_idx]; +} +int smart_ddr_spinlock_init(ddr_spinlock_t *val) +{ + int i; + int init_val = 0; + + if(spin_do_read(val->flag_addr) == 0xab3f) + { + return -2; + } + spin_do_write(val->flag_addr,0xab3f); + spin_do_write(val->lock_addr,0); + + return 0; +} + + + +void smart_ddr_spinlock(ddr_spinlock_t *val) +{ + spinlock_t lockval; + volatile unsigned int *lock; + int ret; + int owner; + int next; + int loop; + + lock = (volatile unsigned int*)(val->lock_addr); + while (1) + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + next = ((lockval.slock >> 16) & 0x0000ffff); + owner = next; + next++; + lockval.slock &=0x0000ffff; + lockval.slock |= ((next & 0xffff) << 16); + ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); + if (1 == ret) + { + break; + } + else + { + + } + } + do + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + g_ddr_spinlock_loop++; + } while (owner != ((lockval.slock & 0x0000ffff))); + +} + + +void smart_ddr_spinunlock(ddr_spinlock_t *val) +{ + spinlock_t lockval; + int ret; + volatile unsigned int * lock; + unsigned int temp_owner = 0; + lock =(volatile unsigned int*)val->lock_addr; + + while (1) + { + lockval.slock = __ucps2_atomicld((int *)lock, f_W); + temp_owner = (lockval.slock & 0x0000ffff); + temp_owner ++; + lockval.slock &= 0xffff0000; + lockval.slock |= (temp_owner & 0x0000ffff); + ret = __ucps2_atomicst((int *)lock, lockval.slock, f_W); + if (1 == ret) + { + break; + } + else + { +// g_ddr_unspinlock_loop++; +// spin_do_write(val->unlock_loop_addr,g_ddr_unspinlock_loop); + + } + } + + +} diff --git a/public/rtos/code/spinlock_code/inc/spinlock.h b/public/rtos/code/spinlock_code/inc/spinlock.h index cf2c75a..af810f6 100644 --- a/public/rtos/code/spinlock_code/inc/spinlock.h +++ b/public/rtos/code/spinlock_code/inc/spinlock.h @@ -14,45 +14,144 @@ typedef enum typedef struct{ union { - unsigned int slock; - + unsigned int slock; }; }spinlock_t; #define APE_NR 12 typedef struct{ - int spinlock_count; - int unspinlock_count; - int spinlock_loop; + unsigned int spinlock_count; + unsigned int unspinlock_count; + unsigned int spinlock_loop; + unsigned int g_spin_count; +// unsigned int unspinlock_loop; }spin_db_info ; typedef struct{ -// spin_db_info spin_per_ape[APE_NR]; - spin_db_info spin_per_ape; - + // spin_db_info spin_per_ape[APE_NR]; + spin_db_info spin_per_ape; }spin_debug_t; +typedef struct +{ + unsigned int lock_addr; //锁物理地址 + unsigned int flag_addr; // 锁标志物理地址 + +}ddr_spinlock_t; extern int smart_spinlock_init(int lock_index); extern void smart_spinlock(int lock_index); extern void smart_spinunlock(int lock_index); -extern int smart_spin_debug_init(unsigned int debug_base_addr, int len_bytes); + +/* + 函数名称:smart_spin_debug_init + 输入参数: lock_idx + 输入参数:debug_base_addr + 输入参数: len_bytes + 返回类型: int + 返回值: 小于0 表示失败 + 返回值: 0 表示成功 + 函数功能: 自旋锁调试接口, + 注意: + 通过lock_idx ,地址与长度指定相应的buf 数据空间,存放相应的自旋锁调试信息。 + 这些调试信息已经格式化,地址由用户指定,len_bytes 不能小于sizeof(spin_debug_t) + 数据格式化内容是 spin_debug_t +*/ + +extern int smart_spin_debug_init(int lock_idx,unsigned int debug_base_addr, int len_bytes); -static inline void smart_spinlock_irq(int lock) +/* + 参数:lock_idx + 参数范围:1--15 +*/ +extern int smart_get_spin_loop_cnt(int lock_idx); +/* + 参数:lock_idx + 参数范围:1--15 +*/ +extern int smart_get_spin_cnt(int lock_idx); +/* + 参数:lock_idx + 参数范围:1--15 +*/ + +extern int smart_get_spinlock_cnt(int lock_idx); +/* + 参数:lock_idx + 参数范围:1--15 +*/ + +extern int smart_get_unspinlock_cnt(int lock_idx); + + +extern int smart_ddr_spinlock_init(ddr_spinlock_t *val); +extern void smart_ddr_spinlock(ddr_spinlock_t *val); +extern void smart_ddr_spinunlock(ddr_spinlock_t *val); + +/* + 函数名称:smart_ddr_spinlock_irq + 函数参数: val + 参数类型: ddr_spinlock_t + 函数功能: 关中断加锁 + 函数说明: 非中断状态下使用 +*/ + +static inline void smart_ddr_spinlock_irq(ddr_spinlock_t *d_lock) { - - __ucps2_IntEn(f_Disable); - smart_spinlock(lock); + + __ucps2_IntEn(f_Disable); + smart_ddr_spinlock(d_lock); } + +/* + 函数名称:smart_ddr_spinunlock_irqrestore + 函数参数: d_lock + 参数类型: ddr_spinlock_t + 函数功能: 解锁开中断 + 函数说明: 非中断状态下使用 +*/ + +static inline void smart_ddr_spinunlock_irqrestore(ddr_spinlock_t *d_lock) +{ + smart_ddr_spinunlock(d_lock); + __ucps2_IntEn(f_Enable); + +} + + +/* + 函数名称:smart_spinlock_irq + 函数参数: lock + 参数类型: int + 函数功能: 关中断加锁 + 函数说明: 非中断状态下使用 +*/ + +static inline void smart_spinlock_irq(int lock) +{ + + __ucps2_IntEn(f_Disable); + smart_spinlock(lock); + +} + +/* + 函数名称:smart_spinunlock_irqrestore + 函数参数: d_lock + 参数类型: int + 函数功能: 解锁开中断 + 函数说明: 非中断状态下使用 +*/ + static inline void smart_spinunlock_irqrestore(int lock) { - smart_spinunlock(lock); - __ucps2_IntEn(f_Enable); + smart_spinunlock(lock); + __ucps2_IntEn(f_Enable); } diff --git a/public/rtos/code/spinlock_code/lib/libspinlock.a b/public/rtos/code/spinlock_code/lib/libspinlock.a new file mode 100644 index 0000000000000000000000000000000000000000..ec5c4a87ccf646f07e7ffce5c7b51bfa564ef216 GIT binary patch literal 4498 zcmds4O>7&-6&{KrwUk+46S3{eO+(6(9lEGVN}*l3NDJ0=ouVbG91?&)+)yiW#brg2 z3YT(RAgI(vg$=`pMdAZPD7B5mg%3XD5}*ec5G3lS1)CH_4@TgFB8e8$=Ag6*ETD4P z?=5GgrDZEcno|dOobP?}X5O2bH?y3sr{sJ>{cd~E*IYstwSld_K417-VQw+l&KUbL zV=a$=(UOWMllizdmd<8!iII3Fmm6a#LysqN}dw^q%t&~vPNOfi#s#b z`%TOsx5r>j!wu)Gy7p4KkWksUro@Lca>{6;C<9s`M;Y?4tT+~KWW$sF$B#AAVz7PU z2hmeDn+?g)C^q(lV@G4``j;Af*r@!ho!MCDzb6K!|6cQY@5Ysz_ToQFf2(=-XQbKR zr;2lH^@)Lb+vZj$dwix#EY5YV)GlA0y0w5Ym%G?z#m4qmzQ=W2%VxA(pQy`Iu?0ID zi#piYRvX)h9%36?b|yj>x7Ng`mRi2y7oF~Bs-4R;16i{hBJB zn7-?+mTEQcvYoB&6`P%%jrOocY<4D9C^oyK>IpHnXh(c4?W)dL>lOI9{CRz>VE%J_ z{yjot{t5jS=7;g&zuSFpV~uS_46NetD%=&IF-4VKUV@-t5Sd*=X@7IcL^JVN+#I;iM z?)x}iy|AiYJ~1VodVNK`+=7_xgY|(f;inrtEEYY0*t!pOR#L*SUd7%j!uq4#?&91v zA-3RvEmGtI0dsV)vs)B2}}Yffs-nNqxgNYJN!mz{trE|MHlba9#O@8 z9;xb*hV>u0irR=Pw%C3G9NPE!RK5LqV{d%am-f-&S9RLML(-rQ|BJI&>jRQ3QXDqe zn|t~Cvg&pH!&|-Zfr|Ngt9$Kh8^(1acEn$4L(ERZjJPYc)<(>2i0wnn+a;}EI_!!q zQ0#4p+a*cWb)l$%TWmwj#JdpRxgYPuyjNcGJ(!_&r<|m9ckp#ztJeos>+w3)zH$(2 zf6!B$bNYw%Mfh8|Sejo)?%XMs%1(dkwFRt$6Mbpzu|~AssHLrgzCoNHsrn}R%)+MI zCyV66hI!gBKbxTHuY3WyPx(!`LOIj2t{^9;a_}I|U(f+;=h(vF1Ur0WF z7Mo3T(V}+(M=km)FpXu7 z_X6xEkqDQ-JqmyCpmswqaQ)k8_uw)y^%uZL(D@{9KZP0}>23W2^eIdGi_n)W`k$av znTC+R0gV4PWC}w1Rca)Tw;u)$WBetqzXqN9Cb`}T-3@^YV|{)JOvTi1H0cgT|6lgu z(mRX#qy;|<-0>Cspu`{@_>WA5{CGI866XBxfKB_d#pbWTH2yN`Fnklfh`Jxr@l}v0 zQD6_pHEweQb{+`XKL(LFzQy$p>;V-YbklDSVIEHinD&WEm@tpIpD?$H0J|a2LZT4z zMfe$xCsAi0WOEYovISFH2l9f-d0-F6)7<6;YKpak79Qm`VIIRWVIIR8u!q~!2y>f{ z2y>fHfGGwy_FaIOYvKbYeiIV1;6ZM48}&5Dlc=viI&f)Gd5bXjbsgBl`5S~eUk0Y} zX`Cg98FPhfcx)14-`)#gbInf^&*zmSp5rUT^R>E8JjZLq^B6uNp5qy`(|q4XU50eP zH^i9uIj9 z-SUibg8(-6Mr-|_2t~Q4?}Mnh2Buc8{13v; B&JF+o literal 0 HcmV?d00001