*** empty log message ***
From-SVN: r1460
This commit is contained in:
parent
17d71a73a9
commit
3f8f5a3f04
@ -76,15 +76,13 @@ enum cmp_type /* comparison type */
|
||||
|
||||
/* Print subsidiary information on the compiler version in use. */
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (hp9000s800)");
|
||||
#define TARGET_VERSION fprintf (stderr, " (hppa)");
|
||||
|
||||
/* Run-time compilation parameters selecting different hardware subsets.
|
||||
|
||||
On the the hp9k800, we don't yet need any. But ... */
|
||||
/* Run-time compilation parameters selecting different hardware subsets. */
|
||||
|
||||
extern int target_flags;
|
||||
|
||||
/* compile code for PA-RISC 1.1 ("Snake") */
|
||||
/* compile code for HP-PA 1.1 ("Snake") */
|
||||
|
||||
#define TARGET_SNAKE (target_flags & 1)
|
||||
|
||||
@ -112,7 +110,7 @@ extern int target_flags;
|
||||
|
||||
/* Define this if most significant word of a multiword number is lowest
|
||||
numbered. */
|
||||
/* For the hp9k800 we can decide arbitrarily
|
||||
/* For the HP-PA we can decide arbitrarily
|
||||
since there are no machine instructions for them. */
|
||||
#define WORDS_BIG_ENDIAN 1
|
||||
|
||||
@ -183,13 +181,13 @@ extern int target_flags;
|
||||
All registers that the compiler knows about must be given numbers,
|
||||
even those that are not normally considered general registers.
|
||||
|
||||
The hp9k800 has 32 fullword registers and 16 floating point
|
||||
HP-PA 1.0 has 32 fullword registers and 16 floating point
|
||||
registers. The floating point registers hold either word or double
|
||||
word values.
|
||||
|
||||
16 additional registers are reserved.
|
||||
|
||||
PA-RISC 1.1 has 32 fullword registers and 32 floating point
|
||||
HP-PA 1.1 has 32 fullword registers and 32 floating point
|
||||
registers. However, the floating point registers behave
|
||||
differently: the left and right halves of registers are addressable
|
||||
as 32 bit registers. So, we will set things up like the 68k which
|
||||
@ -202,7 +200,7 @@ extern int target_flags;
|
||||
/* 1 for registers that have pervasive standard uses
|
||||
and are not available for the register allocator.
|
||||
|
||||
On the hp9k800, these are:
|
||||
On the HP-PA, these are:
|
||||
Reg 0 = 0 (hardware). However, 0 is used for condition code,
|
||||
so is not fixed.
|
||||
Reg 1 = ADDIL target/Temporary (hardware).
|
||||
@ -343,7 +341,7 @@ extern int target_flags;
|
||||
This is ordinarily the length in words of a value of mode MODE
|
||||
but can be less for certain modes in special long registers.
|
||||
|
||||
On the hp9k800, ordinary registers hold 32 bits worth;
|
||||
On the HP-PA, ordinary registers hold 32 bits worth;
|
||||
The floating point registers are 64 bits wide. Snake fp regs are 32
|
||||
bits wide */
|
||||
#define HARD_REGNO_NREGS(REGNO, MODE) \
|
||||
@ -351,7 +349,7 @@ extern int target_flags;
|
||||
? ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) : 1)
|
||||
|
||||
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
|
||||
On the hp9k800, the cpu registers can hold any mode. We
|
||||
On the HP-PA, the cpu registers can hold any mode. We
|
||||
force this to be an even register is it cannot hold the full mode. */
|
||||
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
|
||||
((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \
|
||||
@ -370,7 +368,7 @@ extern int target_flags;
|
||||
/* Specify the registers used for certain standard purposes.
|
||||
The values of these macros are register numbers. */
|
||||
|
||||
/* the hp9k800 pc isn't overloaded on a register that the compiler knows about. */
|
||||
/* The HP-PA pc isn't overloaded on a register that the compiler knows about. */
|
||||
/* #define PC_REGNUM */
|
||||
|
||||
/* Register to use for pushing function arguments. */
|
||||
@ -437,7 +435,7 @@ extern int leaf_function;
|
||||
For any two classes, it is very desirable that there be another
|
||||
class that represents their union. */
|
||||
|
||||
/* The hp9k800 has four kinds of registers: general regs, 1.0 fp regs,
|
||||
/* The HP-PA has four kinds of registers: general regs, 1.0 fp regs,
|
||||
1.1 fp regs, and the high 1.1 fp regs, to which the operands of
|
||||
fmpyadd and fmpysub are restricted. */
|
||||
|
||||
@ -505,7 +503,7 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
|
||||
C is the letter, and VALUE is a constant value.
|
||||
Return 1 if VALUE is in the range specified by C.
|
||||
|
||||
HP9000/800 immediate field sizes:
|
||||
HP-PA immediate field sizes:
|
||||
5 bits: scalar/floating short loads + stores; deposit; conditional branch
|
||||
11 bits: arithmetic immediate, compare immediate
|
||||
14 bits: loads and stores; load offset
|
||||
@ -573,7 +571,7 @@ HP9000/800 immediate field sizes:
|
||||
|
||||
/* If we generate an insn to push BYTES bytes,
|
||||
this says how many the stack pointer really advances by.
|
||||
On the hp9k800, don't define this because there are no push insns. */
|
||||
On the HP-PA, don't define this because there are no push insns. */
|
||||
/* #define PUSH_ROUNDING(BYTES) */
|
||||
|
||||
/* Offset of first parameter from the argument pointer register value.
|
||||
@ -630,7 +628,7 @@ HP9000/800 immediate field sizes:
|
||||
If the precise function being called is known, FUNC is its FUNCTION_DECL;
|
||||
otherwise, FUNC is 0. */
|
||||
|
||||
/* On the hp9k800 the value is found in register(s) 28(-29), unless
|
||||
/* On the HP-PA the value is found in register(s) 28(-29), unless
|
||||
the mode is SF or DF. Then the value is returned in fr4 (36, ) */
|
||||
|
||||
|
||||
@ -666,7 +664,7 @@ HP9000/800 immediate field sizes:
|
||||
and about the args processed so far, enough to enable macros
|
||||
such as FUNCTION_ARG to determine where the next arg should go.
|
||||
|
||||
On the hp9k800, this is a single integer, which is a number of words
|
||||
On the HP-PA, this is a single integer, which is a number of words
|
||||
of arguments scanned so far (including the invisible argument,
|
||||
if any, which holds the structure-value-address).
|
||||
Thus 4 or more means all following args should go on the stack. */
|
||||
@ -706,7 +704,7 @@ HP9000/800 immediate field sizes:
|
||||
NAMED is nonzero if this argument is a named parameter
|
||||
(otherwise it is an extra parameter matching an ellipsis). */
|
||||
|
||||
/* On the hp9k800 the first four words of args are normally in registers
|
||||
/* On the HP-PA the first four words of args are normally in registers
|
||||
and the rest are pushed. But any arg that won't entirely fit in regs
|
||||
is pushed. */
|
||||
|
||||
@ -783,8 +781,13 @@ extern enum cmp_type hppa_branch_type;
|
||||
fprintf (FILE, ",ARGW%d=FR", i++); \
|
||||
else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode) \
|
||||
{ \
|
||||
if (i == 1) i++; \
|
||||
ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++); \
|
||||
if (i <= 2) \
|
||||
{ \
|
||||
if (i == 1) i++; \
|
||||
ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++); \
|
||||
} \
|
||||
else \
|
||||
break; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
@ -957,7 +960,7 @@ extern union tree_node *current_function_decl;
|
||||
/* Now macros that check whether X is a register and also,
|
||||
strictly, whether it is in a specified class.
|
||||
|
||||
These macros are specific to the the hp9k800, and may be used only
|
||||
These macros are specific to the the HP-PA, and may be used only
|
||||
in code for printing assembler insns and in conditions for
|
||||
define_optimization. */
|
||||
|
||||
@ -1060,7 +1063,7 @@ extern union tree_node *current_function_decl;
|
||||
The MODE argument is the machine mode for the MEM expression
|
||||
that wants to use this address.
|
||||
|
||||
On the hp9k800, the actual legitimate addresses must be
|
||||
On the HP-PA, the actual legitimate addresses must be
|
||||
REG+REG, REG+(REG*SCALE) or REG+SMALLINT.
|
||||
But we can treat a SYMBOL_REF as legitimate if it is part of this
|
||||
function's constant-pool, because such addresses can actually
|
||||
@ -1149,7 +1152,7 @@ extern union tree_node *current_function_decl;
|
||||
It is always safe for this macro to do nothing. It exists to recognize
|
||||
opportunities to optimize the output. */
|
||||
|
||||
/* On the hp9k800, change REG+N into REG+REG, and REG+(X*Y) into REG+REG. */
|
||||
/* On the HP-PA, change REG+N into REG+REG, and REG+(X*Y) into REG+REG. */
|
||||
|
||||
#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) \
|
||||
{ if (GET_CODE (X) == PLUS && CONSTANT_ADDRESS_P (XEXP (X, 1))) \
|
||||
@ -1206,7 +1209,7 @@ extern union tree_node *current_function_decl;
|
||||
name string in the `symbol_ref' (if one bit is not enough
|
||||
information).
|
||||
|
||||
On the PA-RISC we use this to indicate if a symbol is in text or
|
||||
On the HP-PA we use this to indicate if a symbol is in text or
|
||||
data space. */
|
||||
|
||||
#define ENCODE_SECTION_INFO(DECL)\
|
||||
@ -1378,7 +1381,7 @@ do { fprintf (FILE, "\t.SPACE $PRIVATE$\n\
|
||||
|
||||
#define ASM_APP_OFF ""
|
||||
|
||||
/* We don't yet know how to identify GCC to HP series 800. */
|
||||
/* We don't yet know how to identify GCC to HP-PA machines. */
|
||||
#define ASM_IDENTIFY_GCC(FILE) fprintf (FILE, "; gcc_compiled.:\n")
|
||||
|
||||
/* Output before code. */
|
||||
@ -1541,7 +1544,7 @@ do { fprintf (FILE, "\t.SPACE $PRIVATE$\n\
|
||||
fprintf (FILE, "\tb L$%04d\n\tnop\n", VALUE)
|
||||
|
||||
/* This is how to output an element of a case-vector that is relative.
|
||||
(the hp9k800 does not use such vectors,
|
||||
(The HP-PA does not use such vectors,
|
||||
but we must define this macro anyway.) */
|
||||
|
||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
|
||||
@ -1605,7 +1608,7 @@ do { fprintf (FILE, "\t.SPACE $PRIVATE$\n\
|
||||
CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
|
||||
For `%' followed by punctuation, CODE is the punctuation and X is null.
|
||||
|
||||
On the hp9k800, the CODE can be `r', meaning this is a register-only operand
|
||||
On the HP-PA, the CODE can be `r', meaning this is a register-only operand
|
||||
and an immediate zero should be represented as `r0'.
|
||||
|
||||
Several % codes are defined:
|
||||
|
Loading…
x
Reference in New Issue
Block a user