This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

m68k DBcc relaxation clarification


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)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]