浏览代码

* correctly load 32 bit values on sparc64

git-svn-id: trunk@36644 -
florian 8 年之前
父节点
当前提交
109612b7e1
共有 3 个文件被更改,包括 9 次插入6 次删除
  1. 7 4
      compiler/sparcgen/cgsparc.pas
  2. 1 1
      compiler/sparcgen/opcode.inc
  3. 1 1
      compiler/sparcgen/strinst.inc

+ 7 - 4
compiler/sparcgen/cgsparc.pas

@@ -459,15 +459,18 @@ implementation
                  Op:=A_LDSH;{Load Signed Halfword}
                OS_16:
                  Op:=A_LDUH;{Load Unsigned Halfword}
-               OS_S32,
-               OS_32:
-                 Op:=A_LD;{Load Word}
 {$ifdef SPARC64}
+               OS_S32:
+                 Op:=A_LDSW;{Load Signed Word}
+               OS_32:
+                 Op:=A_LDUW;{Load Unsigned Word}
                OS_64,
                OS_S64:
                  Op:=A_LDX;
 {$else SPARC64}
-
+               OS_S32,
+               OS_32:
+                 Op:=A_LD;{Load Word}
                OS_S64,
                OS_64:
                  Op:=A_LDD;{Load a Long Word}

+ 1 - 1
compiler/sparcgen/opcode.inc

@@ -13,7 +13,7 @@ A_CBccc,
 A_FLUSH,
 {Load instructions}
 A_LDSB,A_LDSH,A_LDSTUB,
-A_LDUB,A_LDUH,A_LD,A_LDD,A_LDF,A_LDFSR,A_LDDF,A_LDC,A_LDCSR,A_LDDC,A_LDX,
+A_LDUB,A_LDUH,A_LD,A_LDD,A_LDF,A_LDFSR,A_LDDF,A_LDC,A_LDCSR,A_LDDC,A_LDX,A_LDUW,A_LDSW,
 A_LDSBA,A_LDSHA,A_LDUBA,A_LDUHA,A_LDA,A_LDDA,
 A_LDSTUBA,
 A_MULScc,

+ 1 - 1
compiler/sparcgen/strinst.inc

@@ -11,7 +11,7 @@
           'cbccc',
           'flush',
           'ldsb','ldsh','ldstub',
-          'ldub','lduh','ld','ldd','ld','ldfsr','ldd','ldc','ldcsr','lddc','ldx',
+          'ldub','lduh','ld','ldd','ld','ldfsr','ldd','ldc','ldcsr','lddc','ldx','lduw','ldsw',
           'ldsba','ldsha','lduba','lduha','lda','ldda',
           'ldstuba',
           'mulscc',