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

📄 binutils-2.16.1.patch.svn-base

📁 PSP开发环境(Linux) 包含PSPLINK 请自行选择需要安装的库及源代码
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
+				cst = 3;+			      else if (s[0] == '3')+				cst = 5;+			      else if (s[0] == '4')+				cst = 6;+			      else if (s[0] == '6')+				cst = 7;+			      else+				pfx_err = 1;+			    }+			  else+			    {+			      cst = 1;+			    }+			}+		      else if (s[0] == '2')+			cst = 2;+		      else if (s[0] == '3')+			cst = 4;+		      else+			pfx_err = 1;++		      pfx_abs = (cst >> 2) & 0x1;+		      pfx_swz = (cst >> 0) & 0x3;+		      s++;+		    }+		  else+		    {  // variable+		      +		      if (s[0] == '|')+			{ // abs+			  pfx_abs = 1;+			  s++;+			}+		      +		      if ((s[0] == 'X') || (s[0] == 'x'))+			{+			  pfx_swz = 0;+			  s++;+			}+		      else if ((s[0] == 'Y') || (s[0] == 'y'))+			{+			  pfx_swz = 1;+			  s++;+			}+		      else if ((s[0] == 'Z') || (s[0] == 'z'))+			{+			  pfx_swz = 2;+			  s++;+			}+		      else if ((s[0] == 'W') || (s[0] == 'w'))+			{+			  pfx_swz = 3;+			  s++;+			}+		      else if ((s[0] == ',') || IS_SPACE_OR_NUL (s[0])+			       || (s[0] == '|'))+			{+			  pfx_swz =  *args - '0';+			}+		      else+			pfx_err = 1;++		      if (pfx_err == 0)+			{+			  if (s[0] == '|')+			    {+			      s++;+			      if (pfx_abs == 0)+				pfx_err = 1;+			    }+			  else+			    {+			      if (pfx_abs == 1)+				pfx_err = 1;+			    }+			}+		    }++		  if (! ((s[0] == ',') || IS_SPACE_OR_NUL (s[0])))+		    pfx_err = 1;++		  if (pfx_err)+		    as_bad (_("Invalid prefix format (%s)"), pfx_str);++		  shift = *args - '0';++		  operand = (pfx_neg << (VF_SH_PFX_NEG + shift))+			  | (pfx_cst << (VF_SH_PFX_CST + shift))+			  | (pfx_abs << (VF_SH_PFX_ABS + shift))+			  | (pfx_swz << (VF_SH_PFX_SWZ + shift * 2));++		  ip->insn_opcode |= operand;+		  continue;+		}++	      case '4':		/* destination prefix code (X) */+	      case '5':		/* destination prefix code (Y) */+	      case '6':		/* destination prefix code (Z) */+	      case '7':		/* destination prefix code (W) */+		{+		  int operand;+		  int shift;+		  static const char order[] = "xyzwXYZW";++		  int pfx_msk = 0;+		  int pfx_sat = 0;+		  char *pfx_str = s;++		  if (s[0] == '[')+		    s++;+		  if (s[0] == '-')	/* -1:1, skip the minus symbol */+		    s++;++		  if ((s[0] == 'm') || (s[0] == 'M'))+		    {+		      pfx_msk = 1;+		      s++;+		    }+		  else if (s[0] == '0')	/* 0:1 */+		    {+		      pfx_sat = 1;+		      s++;+		    }+		  else if (s[0] == '1')	/* -1:1 or -1:+1 */+		    {+		      pfx_sat = 3;+		      s++;+		    }+		  else if ((s[0] == order[(*args) - '4'])+			   || (s[0] == order[(*args) - '4' + 4]))+		    {+		      pfx_sat = 0;+		      s++;+		    }++		  if (s[0] == ':')	/* skip the :1 or :+1 part of the expression */+		    {+		      s++;+		      if (s[0] == '+')+			s++;+		      if (s[0] == '1')+			s++;+		    }+		  if (s[0] == ']')+		    s++;++		  if (! ((s[0] == ',') || IS_SPACE_OR_NUL (s[0])))+		    as_bad (_("Invalid prefix format (%s)"), pfx_str);++		  shift = *args - '4';+		  operand = (pfx_msk << (VF_SH_PFX_MSK + shift))+			  | (pfx_sat << (VF_SH_PFX_SAT + shift * 2));++		  ip->insn_opcode |= operand;+		  continue;+		}+	      }+	      break;++	    case 'b':		/* base register */+	    case 'd':		/* destination register */+	    case 's':		/* source register */+	    case 't':		/* target register */+	    case 'r':		/* both target and source */+	    case 'v':		/* both dest and source */+	    case 'w':		/* both dest and target */+	    case 'E':		/* coprocessor target register */+	    case 'G':		/* coprocessor destination register */+	    case 'K':		/* 'rdhwr' destination register */+	    case 'x':		/* ignore register name */+	    case 'z':		/* must be zero register */+	    case 'U':           /* destination register (clo/clz).  */+	      s_reset = s;+	      if (s[0] == '$')+		{++		  if (ISDIGIT (s[1]))+		    {+		      ++s; 		      regno = 0; 		      do 			{@@ -8273,30 +9967,27 @@ 		    goto notreg; 		  else 		    {-		      if (s[1] == 'r' && s[2] == 'a')+				const char regName[32][5] = 			{-			  s += 3;-			  regno = RA;-			}-		      else if (s[1] == 'f' && s[2] == 'p')+					"zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",+					"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", +					"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",+					"t8", "t9", "k0", "k1", "gp", "sp", "fp", "ra"+				};+				int i;++				for(i = 0; i < 32; i++) 			{-			  s += 3;-			  regno = FP;-			}-		      else if (s[1] == 's' && s[2] == 'p')+					if(strncmp(&s[1], regName[i], strlen(regName[i])) == 0) 			{-			  s += 3;-			  regno = SP;+						break; 			}-		      else if (s[1] == 'g' && s[2] == 'p')-			{-			  s += 3;-			  regno = GP; 			}-		      else if (s[1] == 'a' && s[2] == 't')++				if(i < 32) 			{-			  s += 3;-			  regno = AT;+					s += strlen(regName[i]) + 1;+					regno = i; 			} 		      else if (s[1] == 'k' && s[2] == 't' && s[3] == '0') 			{@@ -8485,6 +10176,7 @@  		  if ((regno & 1) != 0 		      && HAVE_32BIT_FPRS+		      && ! CPU_IS_ALLEGREX (mips_opts.arch) 		      && ! (strcmp (str, "mtc1") == 0 			    || strcmp (str, "mfc1") == 0 			    || strcmp (str, "lwc1") == 0@@ -13743,6 +15435,8 @@    /* MIPS II */   { "r6000",          0,      ISA_MIPS2,      CPU_R6000 },+  /* Sony PSP "Allegrex" CPU core */+  { "allegrex",       0,      ISA_MIPS2,      CPU_ALLEGREX },    /* MIPS III */   { "r4000",          0,      ISA_MIPS3,      CPU_R4000 },diff -burN binutils-2.16.1/gas/configure binutils-psp/gas/configure--- binutils-2.16.1/gas/configure	2005-03-01 00:43:51.000000000 +0000+++ binutils-psp/gas/configure	2006-05-09 02:55:36.000000000 +0100@@ -4537,6 +4537,9 @@ 	  mips64vr | mips64vrel) 	    mips_cpu=vr4100 	    ;;+	  mipsallegrex | mipsallegrexel)+	    mips_cpu=allegrex+	    ;; 	  mipsisa32r2* | mipsisa64r2*) 	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'` 	    ;;diff -burN binutils-2.16.1/gas/configure.in binutils-psp/gas/configure.in--- binutils-2.16.1/gas/configure.in	2005-03-01 00:43:57.000000000 +0000+++ binutils-psp/gas/configure.in	2006-05-09 02:55:36.000000000 +0100@@ -222,6 +222,9 @@ 	  mips64vr | mips64vrel) 	    mips_cpu=vr4100 	    ;;+	  mipsallegrex | mipsallegrexel)+	    mips_cpu=allegrex+	    ;; 	  mipsisa32r2* | mipsisa64r2*) changequote(,)dnl 	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`diff -burN binutils-2.16.1/gas/testsuite/gas/mips/mips.exp binutils-psp/gas/testsuite/gas/mips/mips.exp--- binutils-2.16.1/gas/testsuite/gas/mips/mips.exp	2005-04-19 18:09:45.000000000 +0100+++ binutils-psp/gas/testsuite/gas/mips/mips.exp	2006-05-09 02:55:36.000000000 +0100@@ -382,6 +382,9 @@ mips_arch_create sb1 	64	mips64	{ mips3d } \ 			{ -march=sb1 -mtune=sb1 } { -mmips:sb1 } \ 			{ mipsisa64sb1-*-* mipsisa64sb1el-*-* }+mips_arch_create allegrex 32	mips2	{ ror } \+			{ -march=allegrex -mtune=allegrex } { -mmips:allegrex } \+			{ mipsallegrex-*-* mipsallegrexel-*-* }   #diff -burN binutils-2.16.1/include/bin-bugs.h binutils-psp/include/bin-bugs.h--- binutils-2.16.1/include/bin-bugs.h	2004-07-23 16:40:19.000000000 +0100+++ binutils-psp/include/bin-bugs.h	2006-05-09 02:55:36.000000000 +0100@@ -1,3 +1,3 @@ #ifndef REPORT_BUGS_TO-#define REPORT_BUGS_TO	"<URL:http://www.sourceware.org/bugzilla/>"+#define REPORT_BUGS_TO	"<URL:http://wiki.pspdev.org/psp:toolchain#bugs>" #endifdiff -burN binutils-2.16.1/include/elf/common.h binutils-psp/include/elf/common.h--- binutils-2.16.1/include/elf/common.h	2004-10-08 14:55:08.000000000 +0100+++ binutils-psp/include/elf/common.h	2006-05-09 02:55:36.000000000 +0100@@ -93,6 +93,7 @@ #define ET_HIOS		0xFEFF	/* Operating system-specific */ #define ET_LOPROC	0xFF00	/* Processor-specific */ #define ET_HIPROC	0xFFFF	/* Processor-specific */+#define ET_PSPEXEC	0xFFA0	/* Sony PSP executable file */  /* Values for e_machine, which identifies the architecture.  These numbers    are officially assigned by registry@caldera.com.  See below for a list ofdiff -burN binutils-2.16.1/include/elf/mips.h binutils-psp/include/elf/mips.h--- binutils-2.16.1/include/elf/mips.h	2005-03-03 11:58:06.000000000 +0000+++ binutils-psp/include/elf/mips.h	2006-05-09 02:55:36.000000000 +0100@@ -212,6 +212,7 @@ #define E_MIPS_MACH_5400	0x00910000 #define E_MIPS_MACH_5500	0x00980000 #define E_MIPS_MACH_9000	0x00990000+#define E_MIPS_MACH_ALLEGREX	0x00A20000  /* Processor specific section indices.  These sections do not actually    exist.  Symbols with a st_shndx field corresponding to one of thesediff -burN binutils-2.16.1/include/opcode/mips.h binutils-psp/include/opcode/mips.h--- binutils-2.16.1/include/opcode/mips.h	2005-03-03 11:58:10.000000000 +0000+++ binutils-psp/include/opcode/mips.h	2006-05-09 02:55:36.000000000 +0100@@ -171,6 +171,228 @@ #define MDMX_FMTSEL_VEC_QH	0x15 #define MDMX_FMTSEL_VEC_OB	0x16 +#include "vfpu.h"++#define VF_MASK_VT		0x7f+#define VF_SH_VT		16+#define VF_MASK_VS		0x7f+#define VF_SH_VS		8+#define VF_MASK_VD		0x7f+#define VF_SH_VD		0+#define VF_MASK_VML		0x1f+#define VF_SH_VML		16+#define VF_MASK_VMH		0x3+#define VF_SH_VMH		0+#define VF_MASK_VNL		0x1f+#define VF_SH_VNL		16+#define VF_MASK_VNH		0x1+#define VF_SH_VNH		0+#define VF_MASK_OFFSET		0x3fff+#define VF_SH_OFFSET		2+#define VF_MASK_CC		0xf+#define VF_SH_CC		0+#define VF_MASK_CONST		0x1f+#define VF_SH_CONST		16+#define VF_MASK_SCALE		0x1f+#define VF_SH_SCALE		16+#define VF_MASK_BCOND		0x7+#define VF_SH_BCOND		18+#define VF_MASK_MCOND		0x7+#define VF_SH_MCOND		16+#define VF_MASK_VCD		0xff+#define VF_SH_VCD		0+#define VF_MASK_VCS		0xff+#define VF_SH_VCS		8+#define VF_MASK_ROT		0x1f+#define VF_SH_ROT		16+#define VF_MASK_WRAP		0xff+#define VF_SH_WRAP		16+#define VF_MASK_TSIGN		0x1+#define VF_SH_TSIGN		5+#define VF_MASK_BMCOND		0x1f+#define VF_SH_BMCOND		0+#define VF_MASK_HFLOAT		0xffff+#define VF_SH_HFLOAT		0+#define VF_MASK_PFX		0xffffff+#define VF_SH_PFX		0+#define VF_MASK_RWB		0x1+#define VF_SH_RWB		1++#define	VF_MASK_PFX_SWZ		0x3+#define	VF_SH_PFX_SWZ		0+#define	VF_MASK_PFX_ABS		0x1+#define	VF_SH_PFX_ABS		8+#define	VF_MASK_PFX_CST		0x1+#define	VF_SH_PFX_CST		12+#define	VF_MASK_PFX_NEG		0x1+#define	VF_SH_PFX_NEG		16+#define	VF_MASK_PFX_SAT		0x3+#define	VF_SH_PFX_SAT		0+#define	VF_MASK_PFX_MSK		0x1+#define	VF_SH_PFX_MSK		8++#define	VF_MASK_ROT_COS		0x3+#define	VF_SH_ROT_COS		0+#define	VF_MASK_ROT_SIN		0x3+#define	VF_SH_ROT_SIN		2+#define	VF_MASK_ROT_NEG		0x1+#define	VF_SH_ROT_NEG		4++#define	VF_MASK_MR_MTX		0x7+#define	VF_SH_MR_MTX		2+#define	VF_MASK_MR_IDX		0x3+#define	VF_SH_MR_IDX		0+#define	VF_MASK_MR_FSL		0x3+#define	VF_SH_MR_FSL		5+#define	VF_MASK_MR_RXC		0x1+#define	VF_SH_MR_RXC		5+#define	VF_MASK_MR_VFSL		0x1+#define	VF_SH_MR_VFSL		6++#define	VF_MAX_MR_MTX		7+#define	VF_MAX_MR_IDX		3+#define	VF_MAX_MR_FSL		3+#define	VF_MAX_MR_VIDX		1+#define	VF_MAX_MR_VFSL		1++#define	VF_MIN_MR		0+#define	VF_MAX_MR		127+#define	VF_MIN_CR		128+#define	VF_MAX_CR		255+#define	VF_MIN_VCR		128+#define	VF_MAX_VCR		143+#define	VF_MIN_CC		0+#define	VF_MAX_CC		15+#define	VF_MIN_CONST		1+#define	VF_MAX_CONST		19+#define	VF_MIN_SCALE		0+#define	VF_MAX_SCALE		31+#define	VF_MIN_BCOND		0+#define	VF_MAX_BCOND		5+#define	VF_MIN_MCOND		0+#define	VF_MAX_MCOND		6+#define	VF_MIN_WRAP		0+#define	VF_MAX_WRAP		255+#define	VF_MIN_ROT		0+#define	VF_MAX_ROT		31+#define	VF_MIN_TSIGN		0+#define	VF_MAX_TSIGN		1+#define	VF_MIN_BMCOND		0+#define	VF_MAX_BMCOND		31+#define	VF_MIN_HFLOAT		0+#define	VF_MAX_HFLOAT		0xffff++#define	VF_MASK_F32_SIGN	0x1+#define	VF_SH_F32_SIGN		31+#define	VF_MASK_F32_EXP		0xff+#define	VF_SH_F32_EXP		23+#define	VF_MASK_F32_FRA		0x7fffff+#define	VF_SH_F32_FRA		0+#define	VF_MASK_F16_SIGN	0x1+#define	VF_SH_F16_SIGN		15+#define	VF_MASK_F16_EXP		0x1f+#define	VF_SH_F16_EXP		10+#define	VF_MASK_F16_FRA		0x3ff+#define	VF_SH_F16_FRA		0++#define	VF_MIN_F32_EXP		0+#define	VF_MAX_F32_EXP		255+#define	VF_BIAS_F32_EXP		127+#define	VF_MIN_F16_EXP		0+#define	VF_MAX_F16_EXP		31+#define	VF_BIAS_F16_EXP		15++#define OP_SH_VFPU_DELTA	0+#define OP_MASK_VFPU_DELTA	0xfffc+#define OP_SH_VFPU_IMM3		16+#define OP_MASK_VFPU_IMM3	0x7+#define OP_SH_VFPU_IMM5		16+#define OP_MASK_VFPU_IMM5	0x1f+#define OP_SH_VFPU_IMM8		16+#define OP_MASK_VFPU_IMM8	0xff+#define OP_SH_VFPU_CC		18	/* Condition code. */+#define OP_MASK_VFPU_CC		0x7+#define OP_SH_VFPU_CONST	16+#define OP_MASK_VFPU_CONST	0x1f+#define OP_SH_VFPU_COND		0	/* Conditional compare. */+#define OP_MASK_VFPU_COND	0xf+#define OP_SH_VFPU_VMTVC	0+#define OP_MASK_VFPU_VMTVC	0xff+#define OP_SH_VFPU_VMFVC	8+#def

⌨️ 快捷键说明

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