⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sem.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
#undef FLD}/* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  BI tmp_tmp;  QI tmp_cc;  SI tmp_result;  tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);  tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) {  tmp_cc = ANDQI (tmp_cc, 13);} else {  tmp_cc = ORQI (tmp_cc, 2);}  tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) {  tmp_cc = ANDQI (tmp_cc, 14);} else {  tmp_cc = ORQI (tmp_cc, 1);}  tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));if (EQSI (tmp_result, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_result, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else {  tmp_cc = ANDQI (tmp_cc, 3);}}  {    SI opval = tmp_result;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  BI tmp_tmp;  QI tmp_cc;  SI tmp_result;  tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);  tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) {  tmp_cc = ANDQI (tmp_cc, 13);} else {  tmp_cc = ORQI (tmp_cc, 2);}  tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) {  tmp_cc = ANDQI (tmp_cc, 14);} else {  tmp_cc = ORQI (tmp_cc, 1);}  tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));if (EQSI (tmp_result, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_result, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else {  tmp_cc = ANDQI (tmp_cc, 3);}}  {    SI opval = tmp_result;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_tmp;  tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {if (LTSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {  {    UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}}}  abuf->written = written;  return vpc;#undef FLD}/* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_tmp;  tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {if (LTSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {  {    UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}}}  abuf->written = written;  return vpc;#undef FLD}/* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_tmp;  tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {if (LTSI (tmp_tmp, 0)) {  {    UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }} else {  {    UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    written |= (1 << 4);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}}}  abuf->written = written;  return vpc;#undef FLD}/* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_shift;  SI tmp_tmp;  QI tmp_cc;  tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);  tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));  tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else {  tmp_cc = ANDQI (tmp_cc, 3);}}  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_shift;  SI tmp_tmp;  QI tmp_cc;  tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);  tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));  tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else {  tmp_cc = ANDQI (tmp_cc, 3);}}  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  SI tmp_shift;  SI tmp_tmp;  QI tmp_cc;  tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);  tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));  tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);  {    SI opval = tmp_tmp;    sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);  }if (EQSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) {  tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else {  tmp_cc = ANDQI (tmp_cc, 3);}}  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_smulcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  DI tmp_tmp;  QI tmp_cc;  tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);  tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));if (EQDI (SRLDI (tmp_tmp, 63), 0)) {  tmp_cc = ANDQI (tmp_cc, 7);} else {  tmp_cc = ORQI (tmp_cc, 8);}if (EQBI (EQDI (tmp_tmp, 0), 0)) {  tmp_cc = ANDQI (tmp_cc, 11);} else {  tmp_cc = ORQI (tmp_cc, 4);}  {    DI opval = tmp_tmp;    sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);  }  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_smulcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);{  DI tmp_tmp;  QI tmp_cc;  tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);  tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));if (EQDI (SRLDI (tmp_tmp, 63), 0)) {  tmp_cc = ANDQI (tmp_cc, 7);} else {  tmp_cc = ORQI (tmp_cc, 8);}if (EQBI (EQDI (tmp_tmp, 0), 0)) {  tmp_cc = ANDQI (tmp_cc, 11);} else {  tmp_cc = ORQI (tmp_cc, 4);}  {    DI opval = tmp_tmp;    sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);    TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);  }  {    UQI opval = tmp_cc;    sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);    TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);  }}  return vpc;#undef FLD}/* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.f  ARGBUF *abuf = SEM_ARGBUF (sem_arg);  int UNUSED written = 0;  IADDR UNUSED pc = abuf->addr;  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -