Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
e97f2dc6
Commit
e97f2dc6
authored
Mar 14, 1992
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r485
parent
767fcd82
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
8 deletions
+59
-8
gcc/config/pyr/pyr.h
+59
-8
No files found.
gcc/config/pyr/pyr.h
View file @
e97f2dc6
...
...
@@ -145,12 +145,16 @@ extern int target_flags;
/* Alignment of field after `int : 0' in a structure. */
#define EMPTY_FIELD_BOUNDARY 32
/* Every structure's size must be a multiple of this. */
/* ??? This is a guess. */
#define STRUCTURE_SIZE_BOUNDARY 32
/* No data type wants to be aligned rounder than this. */
#define BIGGEST_ALIGNMENT 32
/* Specified types of bitfields affect alignment of those fields
and of the structure as a whole. */
#define PCC_BITFIELD_TYPE_MATTERS
#define PCC_BITFIELD_TYPE_MATTERS
1
/* Make strings word-aligned so strcpy from constants will be faster.
Pyramid documentation says the best alignment is to align
...
...
@@ -168,9 +172,9 @@ extern int target_flags;
&& TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
&& (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
/*
Define this
if move instructions will actually fail to work
/*
Set this nonzero
if move instructions will actually fail to work
when given unaligned data. */
#define STRICT_ALIGNMENT
#define STRICT_ALIGNMENT
1
/*** Standard register usage. ***/
...
...
@@ -329,6 +333,12 @@ frame n | | | |
/* If needed, Pyramid says to use temporary register 12. */
#define STATIC_CHAIN_REGNUM PYR_TREG(12)
/* If register windows are used, STATIC_CHAIN_INCOMING_REGNUM
is the register number as seen by the called function, while
STATIC_CHAIN_REGNUM is the register number as seen by the calling
function. */
#define STATIC_CHAIN_INCOMING_REGNUM PYR_PREG(12)
/* Register in which address to store a structure value
is passed to a function.
On a Pyramid, this is temporary register 0 (TR0). */
...
...
@@ -547,7 +557,7 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
#define CUMULATIVE_ARGS int
/* Define the number of registers that can hold paramters.
/* Define the number of registers that can hold param
e
ters.
This macro is used only in other macro definitions below. */
#define NPARM_REGS 12
...
...
@@ -694,6 +704,38 @@ extern void* pyr_function_arg ();
#endif
/* !FRAME_POINTER_REQUIRED */
/* the trampoline stuff was taken from convex.h - S.P. */
/* A C statement to output, on the stream FILE, assembler code for a
block of data that contains the constant parts of a trampoline. This
code should not include a label - the label is taken care of
automatically.
We use TR12/PR12 for the static chain.
movew $<STATIC>,pr12 # I2R
jump $<func> # S2R
*/
#define TRAMPOLINE_TEMPLATE(FILE) \
{ ASM_OUTPUT_INT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x2100001C)); \
ASM_OUTPUT_INT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x00000000)); \
ASM_OUTPUT_INT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x40000000)); \
ASM_OUTPUT_INT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x00000000)); }
#define TRAMPOLINE_SIZE 16
#define TRAMPOLINE_ALIGNMENT 32
/* Emit RTL insns to initialize the variable parts of a trampoline.
FNADDR is an RTX for the address of the function's pure code.
CXT is an RTX for the static chain value for the function. */
#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
{ emit_move_insn (gen_rtx (MEM, Pmode, plus_constant (TRAMP, 4)), CXT); \
emit_move_insn (gen_rtx (MEM, Pmode, plus_constant (TRAMP, 12)), FNADDR); \
emit_call_insn (gen_call (gen_rtx (MEM, QImode, \
gen_rtx (SYMBOL_REF, Pmode, \
"__enable_execute_stack")), \
const0_rtx)); \
}
/* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */
#define FUNCTION_PROFILER(FILE, LABELNO) \
...
...
@@ -728,10 +770,15 @@ extern int current_function_calls_alloca;
+ current_function_args_size != 0 \
|| current_function_calls_alloca) \
/* If the memory address ADDR is relative to the frame pointer,
correct it to be relative to the stack pointer instead.
This is for when we don't use a frame pointer.
ADDR should be a variable name. */
/* Store in the variable DEPTH the initial difference between the
frame pointer reg contents and the stack pointer reg contents,
as of the start of the function body. This depends on the layout
of the fixed parts of the stack frame and on how registers are saved.
On the Pyramid, FRAME_POINTER_REQUIRED is always 1, so the definition
of this macro doesn't matter. But it must be defined. */
#define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0;
/*** Addressing modes, and classification of registers for them. ***/
...
...
@@ -1004,6 +1051,10 @@ extern int current_function_calls_alloca;
case CONST_DOUBLE: \
return 6;
/* A flag which says to swap the operands of certain insns
when they are output. */
extern
int
swap_operands
;
/*** Condition Code Information ***/
/* Tell final.c how to eliminate redundant test instructions. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment