* config/tc-mn10300.c (md_relax_table): More fixes to the offsets in this table.

They should be correct now.
* gas/mn10300/relax.s: Add further tests of the relaxing of branch instructions.
* gas/mn10300/relax.d: Add expected relocations.
This commit is contained in:
Nick Clifton
2004-11-23 14:49:12 +00:00
parent 7b5ba0cc21
commit dae1b34eab
5 changed files with 111 additions and 15 deletions

View File

@ -1,3 +1,8 @@
2004-11-23 Nick Clifton <nickc@redhat.com>
* config/tc-mn10300.c (md_relax_table): More fixes to the offsets
in this table. They should be correct now.
2004-11-23 Jan Beulich <jbeulich@novell.com> 2004-11-23 Jan Beulich <jbeulich@novell.com>
* config/tc-i386.h (CpuMMX2): Declare. Artificial classifier to * config/tc-i386.h (CpuMMX2): Declare. Artificial classifier to

View File

@ -54,15 +54,20 @@ const char EXP_CHARS[] = "eE";
as in 0d1.0. */ as in 0d1.0. */
const char FLT_CHARS[] = "dD"; const char FLT_CHARS[] = "dD";
const relax_typeS md_relax_table[] = { const relax_typeS md_relax_table[] =
{
/* The plus values for the bCC and fBCC instructions in the table below
are because the branch instruction is translated into a jump
instruction that is now +2 or +3 bytes further on in memory, and the
correct size of jump instruction must be selected. */
/* bCC relaxing */ /* bCC relaxing */
{0x7f, -0x80, 2, 1}, {0x7f, -0x80, 2, 1},
{0x7fff, -0x8000 + 1, 5, 2}, {0x7fff + 2, -0x8000 + 2, 5, 2},
{0x7fffffff, -0x80000000, 7, 0}, {0x7fffffff, -0x80000000, 7, 0},
/* bCC relaxing (uncommon cases) */ /* bCC relaxing (uncommon cases for 3byte length instructions) */
{0x7f, -0x80, 3, 4}, {0x7f, -0x80, 3, 4},
{0x7fff, -0x8000 + 1, 6, 5}, {0x7fff + 3, -0x8000 + 3, 6, 5},
{0x7fffffff, -0x80000000, 8, 0}, {0x7fffffff, -0x80000000, 8, 0},
/* call relaxing */ /* call relaxing */
@ -80,7 +85,7 @@ const relax_typeS md_relax_table[] = {
/* fbCC relaxing */ /* fbCC relaxing */
{0x7f, -0x80, 3, 14}, {0x7f, -0x80, 3, 14},
{0x7fff, -0x8000 + 1, 6, 15}, {0x7fff + 3, -0x8000 + 3, 6, 15},
{0x7fffffff, -0x80000000, 8, 0}, {0x7fffffff, -0x80000000, 8, 0},
}; };

View File

@ -1,3 +1,9 @@
2004-11-23 Nick Clifton <nickc@redhat.com>
* gas/mn10300/relax.s: Add further tests of the relaxing of branch
instructions.
* gas/mn10300/relax.d: Add expected relocations.
2004-11-22 Ravi Ramaseshan <ravi.ramaseshan@codito.com> 2004-11-22 Ravi Ramaseshan <ravi.ramaseshan@codito.com>
* gas/arc/ld.s: Add check of load of a long immediate. * gas/arc/ld.s: Add check of load of a long immediate.

View File

@ -6,12 +6,31 @@
RELOCATION RECORDS FOR \[.rlcb\]: RELOCATION RECORDS FOR \[.rlcb\]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0+8003 R_MN10300_PCREL8 .L0._0\+0x00000001 0+8003 R_MN10300_PCREL8 .L0._0\+0x00000001
0+8005 R_MN10300_PCREL32 .L2\+0x00000001 0+8005 R_MN10300_PCREL32 .L1\+0x00000001
RELOCATION RECORDS FOR \[.rlfcb\]:
RELOCATION RECORDS FOR \[.rsflb\]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0+8004 R_MN10300_PCREL8 .L0._1\+0x00000002 0+8004 R_MN10300_PCREL8 .L0._1\+0x00000002
0+8006 R_MN10300_PCREL32 .L4\+0x00000001 0+8006 R_MN10300_PCREL32 .L2\+0x00000001
RELOCATION RECORDS FOR \[.rscb\]:
OFFSET TYPE VALUE
0+103 R_MN10300_PCREL8 .L0._2\+0x00000001
0+105 R_MN10300_PCREL16 .L3\+0x00000001
RELOCATION RECORDS FOR \[.rsfcb\]:
OFFSET TYPE VALUE
0+104 R_MN10300_PCREL8 .L0._3\+0x00000002
0+106 R_MN10300_PCREL16 .L4\+0x00000001
RELOCATION RECORDS FOR \[.rsucb\]:
OFFSET TYPE VALUE
0+104 R_MN10300_PCREL8 .L0._4\+0x00000002
0+106 R_MN10300_PCREL16 .L5\+0x00000001
RELOCATION RECORDS FOR \[.rlucb\]:
OFFSET TYPE VALUE
0+8004 R_MN10300_PCREL8 .L0._5\+0x00000002
0+8006 R_MN10300_PCREL32 .L6\+0x00000001

View File

@ -5,6 +5,22 @@
relax_long_cond_branch: relax_long_cond_branch:
clr d0 clr d0
clr d1 clr d1
.L1:
add d1,d0
inc d1
.fill 32764, 1, 0xcb
cmp 9,d1
ble .L1
rets
.section .rlfcb, "ax"
.global relax_long_float_cond_branch
relax_long_float_cond_branch:
clr d0
clr d1
.L2: .L2:
add d1,d0 add d1,d0
inc d1 inc d1
@ -12,21 +28,66 @@ relax_long_cond_branch:
.fill 32764, 1, 0xcb .fill 32764, 1, 0xcb
cmp 9,d1 cmp 9,d1
ble .L2 fble .L2
rets rets
.section .rsflb, "ax" .section .rscb, "ax"
.global relax_long_float_cond_branch .global relax_short_cond_branch
relax_long_float_cond_branch: relax_short_cond_branch:
clr d0
clr d1
.L3:
add d1,d0
inc d1
.fill 252, 1, 0xcb
cmp 9,d1
ble .L3
rets
.section .rsfcb, "ax"
.global relax_short_float_cond_branch
relax_short_float_cond_branch:
clr d0 clr d0
clr d1 clr d1
.L4: .L4:
add d1,d0 add d1,d0
inc d1 inc d1
.fill 32764, 1, 0xcb .fill 252, 1, 0xcb
cmp 9,d1 cmp 9,d1
fble .L4 fble .L4
rets rets
.section .rsucb, "ax"
.global relax_short_uncommon_cond_branch
relax_short_uncommon_cond_branch:
clr d0
clr d1
.L5:
add d1,d0
inc d1
.fill 252, 1, 0xcb
cmp 9,d1
bvc .L5
rets
.section .rlucb, "ax"
.global relax_long_uncommon_cond_branch
relax_long_uncommon_cond_branch:
clr d0
clr d1
.L6:
add d1,d0
inc d1
.fill 32764, 1, 0xcb
cmp 9,d1
bvc .L6
rets