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

📄 profile-fr450.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* frv simulator fr450 dependent profiling code.   Copyright (C) 2001, 2004 Free Software Foundation, Inc.   Contributed by Red HatThis file is part of the GNU simulators.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public License alongwith this program; if not, write to the Free Software Foundation, Inc.,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/#define WANT_CPU#define WANT_CPU_FRVBF#include "sim-main.h"#include "bfd.h"#if WITH_PROFILE_MODEL_P#include "profile.h"#include "profile-fr400.h"intfrvbf_model_fr450_u_exec (SIM_CPU *cpu, const IDESC *idesc,			    int unit_num, int referenced){  return idesc->timing->units[unit_num].done;}intfrvbf_model_fr450_u_integer (SIM_CPU *cpu, const IDESC *idesc,			     int unit_num, int referenced,			     INT in_GRi, INT in_GRj, INT out_GRk,			     INT out_ICCi_1){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_integer (cpu, idesc, unit_num, referenced,				      in_GRi, in_GRj, out_GRk, out_ICCi_1);}intfrvbf_model_fr450_u_imul (SIM_CPU *cpu, const IDESC *idesc,			  int unit_num, int referenced,			  INT in_GRi, INT in_GRj, INT out_GRk, INT out_ICCi_1){  int cycles;  if (model_insn == FRV_INSN_MODEL_PASS_1)    {      /* Pass 1 is the same as for fr500.  */      return frvbf_model_fr500_u_imul (cpu, idesc, unit_num, referenced,				       in_GRi, in_GRj, out_GRk, out_ICCi_1);    }  /* icc0-icc4 are the upper 4 fields of the CCR.  */  if (out_ICCi_1 >= 0)    out_ICCi_1 += 4;  /* GRk and IACCi_1 have a latency of 1 cycle.  */  cycles = idesc->timing->units[unit_num].done;  update_GRdouble_latency (cpu, out_GRk, cycles + 1);  update_CCR_latency (cpu, out_ICCi_1, cycles + 1);  return cycles;}intfrvbf_model_fr450_u_idiv (SIM_CPU *cpu, const IDESC *idesc,			  int unit_num, int referenced,			  INT in_GRi, INT in_GRj, INT out_GRk, INT out_ICCi_1){  int cycles;  if (model_insn == FRV_INSN_MODEL_PASS_1)    {      /* Pass 1 is the same as for fr500.  */      return frvbf_model_fr500_u_idiv (cpu, idesc, unit_num, referenced,				       in_GRi, in_GRj, out_GRk, out_ICCi_1);    }  /* icc0-icc4 are the upper 4 fields of the CCR.  */  if (out_ICCi_1 >= 0)    out_ICCi_1 += 4;  /* GRk, ICCi_1 and the divider have a latency of 18 cycles  */  cycles = idesc->timing->units[unit_num].done;  update_GR_latency (cpu, out_GRk, cycles + 18);  update_CCR_latency (cpu, out_ICCi_1, cycles + 18);  update_idiv_resource_latency (cpu, 0, cycles + 18);  return cycles;}intfrvbf_model_fr450_u_branch (SIM_CPU *cpu, const IDESC *idesc,			    int unit_num, int referenced,			    INT in_GRi, INT in_GRj,			    INT in_ICCi_2, INT in_ICCi_3){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_branch (cpu, idesc, unit_num, referenced,				     in_GRi, in_GRj, in_ICCi_2, in_ICCi_3);}intfrvbf_model_fr450_u_trap (SIM_CPU *cpu, const IDESC *idesc,			  int unit_num, int referenced,			  INT in_GRi, INT in_GRj,			  INT in_ICCi_2, INT in_FCCi_2){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_trap (cpu, idesc, unit_num, referenced,				   in_GRi, in_GRj, in_ICCi_2, in_FCCi_2);}intfrvbf_model_fr450_u_check (SIM_CPU *cpu, const IDESC *idesc,			   int unit_num, int referenced,			   INT in_ICCi_3, INT in_FCCi_3){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_check (cpu, idesc, unit_num, referenced,				    in_ICCi_3, in_FCCi_3);}intfrvbf_model_fr450_u_set_hilo (SIM_CPU *cpu, const IDESC *idesc,			     int unit_num, int referenced,			     INT out_GRkhi, INT out_GRklo){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_set_hilo (cpu, idesc, unit_num, referenced,				       out_GRkhi, out_GRklo);}intfrvbf_model_fr450_u_gr_load (SIM_CPU *cpu, const IDESC *idesc,			     int unit_num, int referenced,			     INT in_GRi, INT in_GRj,			     INT out_GRk, INT out_GRdoublek){  int cycles;  if (model_insn == FRV_INSN_MODEL_PASS_1)    {      /* Pass 1 is the same as for fr500.  */      return frvbf_model_fr500_u_fr_load (cpu, idesc, unit_num, referenced,					  in_GRi, in_GRj, out_GRk,					  out_GRdoublek);    }  cycles = idesc->timing->units[unit_num].done;  /* The latency of GRk for a load will depend on how long it takes to retrieve     the the data from the cache or memory.  */  update_GR_latency_for_load (cpu, out_GRk, cycles);  update_GRdouble_latency_for_load (cpu, out_GRdoublek, cycles);  if (CGEN_ATTR_VALUE(idesc, idesc->attrs, CGEN_INSN_NON_EXCEPTING))    {      /* GNER has a latency of 2 cycles.  */      update_SPR_latency (cpu, GNER_FOR_GR (out_GRk), cycles + 2);      update_SPR_latency (cpu, GNER_FOR_GR (out_GRdoublek), cycles + 2);    }  return cycles;}intfrvbf_model_fr450_u_gr_store (SIM_CPU *cpu, const IDESC *idesc,			      int unit_num, int referenced,			      INT in_GRi, INT in_GRj,			      INT in_GRk, INT in_GRdoublek){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_gr_store (cpu, idesc, unit_num, referenced,				       in_GRi, in_GRj, in_GRk, in_GRdoublek);}intfrvbf_model_fr450_u_fr_load (SIM_CPU *cpu, const IDESC *idesc,			     int unit_num, int referenced,			     INT in_GRi, INT in_GRj,			     INT out_FRk, INT out_FRdoublek){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_fr_load (cpu, idesc, unit_num, referenced,				      in_GRi, in_GRj, out_FRk, out_FRdoublek);}intfrvbf_model_fr450_u_fr_store (SIM_CPU *cpu, const IDESC *idesc,			      int unit_num, int referenced,			      INT in_GRi, INT in_GRj,			      INT in_FRk, INT in_FRdoublek){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_fr_load (cpu, idesc, unit_num, referenced,				      in_GRi, in_GRj, in_FRk, in_FRdoublek);}intfrvbf_model_fr450_u_swap (SIM_CPU *cpu, const IDESC *idesc,			  int unit_num, int referenced,			  INT in_GRi, INT in_GRj, INT out_GRk){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_swap (cpu, idesc, unit_num, referenced,				   in_GRi, in_GRj, out_GRk);}intfrvbf_model_fr450_u_fr2gr (SIM_CPU *cpu, const IDESC *idesc,			   int unit_num, int referenced,			   INT in_FRk, INT out_GRj){  int cycles;  if (model_insn == FRV_INSN_MODEL_PASS_1)    {      /* Pass 1 is the same as for fr400.  */      return frvbf_model_fr500_u_fr2gr (cpu, idesc, unit_num, referenced,					in_FRk, out_GRj);    }  /* The latency of GRj is 1 cycle.  */  cycles = idesc->timing->units[unit_num].done;  update_GR_latency (cpu, out_GRj, cycles + 1);  return cycles;}intfrvbf_model_fr450_u_spr2gr (SIM_CPU *cpu, const IDESC *idesc,			   int unit_num, int referenced,			   INT in_spr, INT out_GRj){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_spr2gr (cpu, idesc, unit_num, referenced,				     in_spr, out_GRj);}intfrvbf_model_fr450_u_gr2fr (SIM_CPU *cpu, const IDESC *idesc,			   int unit_num, int referenced,			   INT in_GRj, INT out_FRk){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_gr2fr (cpu, idesc, unit_num, referenced,				    in_GRj, out_FRk);}intfrvbf_model_fr450_u_gr2spr (SIM_CPU *cpu, const IDESC *idesc,			    int unit_num, int referenced,			    INT in_GRj, INT out_spr){  /* Modelling for this unit is the same as for fr500.  */  return frvbf_model_fr500_u_gr2spr (cpu, idesc, unit_num, referenced,				     in_GRj, out_spr);}intfrvbf_model_fr450_u_media_1 (SIM_CPU *cpu, const IDESC *idesc,			     int unit_num, int referenced,			     INT in_FRi, INT in_FRj,			     INT out_FRk){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_media_1 (cpu, idesc, unit_num, referenced,				      in_FRi, in_FRj, out_FRk);}intfrvbf_model_fr450_u_media_1_quad (SIM_CPU *cpu, const IDESC *idesc,				  int unit_num, int referenced,				  INT in_FRi, INT in_FRj,				  INT out_FRk){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_media_1_quad (cpu, idesc, unit_num, referenced,					   in_FRi, in_FRj, out_FRk);}intfrvbf_model_fr450_u_media_hilo (SIM_CPU *cpu, const IDESC *idesc,				int unit_num, int referenced,				INT out_FRkhi, INT out_FRklo){  /* Modelling for this unit is the same as for fr400.  */  return frvbf_model_fr400_u_media_hilo (cpu, idesc, unit_num, referenced,					 out_FRkhi, out_FRklo);}

⌨️ 快捷键说明

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