🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Joseph Francis Mon, 12 Oct 1992 17:08
Bug: i860 address operands in gcc-2.2.2
#1189
Author: Joseph Francis
Date: Mon, 12 Oct 1992 17:08
38 lines
1565 bytes
In gcc-2.2.2, targeted for the i860 processor, the following code exists
in file "i860.h", in the configuration directory:

under PRINT_OPERAND(FILE, X, CODE)

if (GET_CODE (X) == MEM)
  PRINT_OPERAND_PART (FILE, XEXP (X, 0),
                      const_int_operand (XEXP (X, 0))
                              ? OPERAND_HIGH_PART
                              : OPERAND_HIGH_ADJ_PART);

this produces assembler instructions for constant integer address
operands (i.e., fixed memory locations, here 0xabcdefgh) with bad
offset adjust instructions.

		orh	h%0xabcdefgh,r0,r31
		st.l    r16,l%0xabcdefgh(r31)

		and when assembled and executed the resulting address
		becomes 0xabceefgh

the code should be something more like:

if (GET_CODE (X) == MEM)
  PRINT_OPERAND_PART (FILE, XEXP (X, 0),
                           OPERAND_HIGH_ADJ_PART);

which produces the code

		orh	ha%0xabcdefgh,r0,r31
		st.l	r16,l%0xabcdefgh(r31)

Works for me.


-- 
| Le Jojo: Fresh 'n' Clean, speaking out to the way you want to live
| today; American - All American; doing, a bit so, and even more so.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads