This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
m68k DBcc relaxation clarification
- To: binutils at sourceware dot cygnus dot com
- Subject: m68k DBcc relaxation clarification
- From: msokolov at ivan dot Harhan dot ORG (Michael Sokolov)
- Date: Thu, 20 Apr 00 15:00:32 CDT
OK,
There is one thing I forgot to mention regarding my m68k relaxing changes. DBcc
conditional loop instructions support 16-bit PC-relative displacements only on
all CPUs. gas has traditionally relaxed them (either when the reference is
internal and exceeds 32 KB or when it's external) to the following sequence:
dbcc L1
bras L2
L1: jmp target | absolute jump
L2:
I have made the following changes:
1. My first patch, which fixes the -l (keep external references short) option,
makes -l disable this relaxation for external references. I believe this is the
right thing to do to implement the original intent of -l.
2. In my last patch, where I add --pcrel, I changed DBcc relaxation to respect
this option and to support generating a long branch instead of the absolute
jump when available. Specifically, a long branch is possible when the CPU is
68020 or higher and an absolute jump is possible when --pcrel is not given.
When both conditions are true (68020 or higher CPU and no --pcrel) either is
possible. My patch makes it generate a long branch in this case. Ian, do you
agree with this, or should it be an absolute jump instead?
There is no new patch, just a clarification of what I did in my existing ones.
--
Michael Sokolov Harhan Engineering Laboratory
Public Service Agent International Free Computing Task Force
International Engineering and Science Task Force
615 N GOOD LATIMER EXPY STE #4
DALLAS TX 75204-5852 USA
Phone: +1-214-824-7693 (Harhan Eng Lab office)
E-mail: msokolov@ivan.Harhan.ORG (ARPA TCP/SMTP) (UUCP coming soon)