Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
GHC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
alexbiehl-gc
GHC
Commits
45a8da1b
Commit
45a8da1b
authored
28 years ago
by
sof
Browse files
Options
Downloads
Patches
Plain Diff
[project @ 1997-03-13 08:03:07 by sof]
PowerPC register maps mods (courtesy of Andre\')
parent
e61549bd
Loading
Loading
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ghc/includes/MachRegs.lh
+54
-43
54 additions, 43 deletions
ghc/includes/MachRegs.lh
with
54 additions
and
43 deletions
ghc/includes/MachRegs.lh
+
54
−
43
View file @
45a8da1b
...
...
@@ -701,10 +701,21 @@ We can steal some, but we might have to save/restore around ccalls.
%* *
%************************************************************************
\tr{r14}--\tr{r31} are wonderful callee-save registers.
\tr{r0}--\tr{r13} are caller-save registers.
0 system glue? (caller-save, volatile)
1 SP (callee-save, non-volatile)
2 RTOC (callee-save, non-volatile)
3-10 args/return (caller-save, volatile)
11,12 system glue? (caller-save, volatile)
13-31 (callee-save, non-volatile)
\tr{%fr14}--\tr{%fr31} are callee-save floating-point registers.
f0 (caller-save, volatile)
f1-f13 args/return (caller-save, volatile)
f14-f31 (callee-save, non-volatile)
\tr{13}--\tr{31} are wonderful callee-save registers.
\tr{0}--\tr{12} are caller-save registers.
\tr{%f14}--\tr{%f31} are callee-save floating-point registers.
I think we can do the Whole Business with callee-save registers only!
...
...
@@ -714,33 +725,33 @@ I think we can do the Whole Business with callee-save registers only!
#define REG(x) __asm__(#x)
#if defined(MARK_REG_MAP)
#define REG_Mark
r14
#define REG_MStack
r15
#define REG_MRoot
r16
#define REG_BitArray
r17
#define REG_HeapBase
r18
#define REG_HeapLim
r19
#define REG_Mark
22
#define REG_MStack
23
#define REG_MRoot
24
#define REG_BitArray
25
#define REG_HeapBase
26
#define REG_HeapLim
27
#else
#if defined(SCAN_REG_MAP)
#define REG_Scan
r14
#define REG_New
r15
#define REG_LinkLim
r16
#define REG_Scan
22
#define REG_New
23
#define REG_LinkLim
24
#else
#if defined(SCAV_REG_MAP)
#define REG_Scav
r14
#define REG_ToHp
r15
#define REG_Scav
22
#define REG_ToHp
23
#if defined(GCap) || defined(GCgn)
#define REG_OldGen
r16
#define REG_OldGen
24
#endif /* GCap || GCgn */
#else /* default: MAIN_REG_MAP */
/* callee saves */
#define CALLEE_SAVES_FltReg1
#define CALLEE_SAVES_FltReg2
#define CALLEE_SAVES_FltReg3
#define CALLEE_SAVES_FltReg4
#define CALLEE_SAVES_DblReg1
#define CALLEE_SAVES_DblReg2
/*
#define CALLEE_SAVES_FltReg1
*/
/*
#define CALLEE_SAVES_FltReg2
*/
/*
#define CALLEE_SAVES_FltReg3
*/
/*
#define CALLEE_SAVES_FltReg4
*/
/*
#define CALLEE_SAVES_DblReg1
*/
/*
#define CALLEE_SAVES_DblReg2
*/
#define CALLEE_SAVES_SpA
#define CALLEE_SAVES_SuA
#define CALLEE_SAVES_SpB
...
...
@@ -759,34 +770,34 @@ I think we can do the Whole Business with callee-save registers only!
#define CALLEE_SAVES_R7
#define CALLEE_SAVES_R8
#define REG_R1
r
14
#define REG_R2
r
15
#define REG_R3
r
16
#define REG_R4
r
17
#define REG_R5
r
18
#define REG_R6
r
19
#define REG_R7
r
20
#define REG_R8
r
21
#define REG_R1 14
#define REG_R2 15
#define REG_R3 16
#define REG_R4 17
#define REG_R5 18
#define REG_R6 19
#define REG_R7 20
#define REG_R8 21
#define REG_Flt1
fr
14
#define REG_Flt2
fr
15
#define REG_Flt3
fr
16
#define REG_Flt4
fr
17
/*
#define REG_Flt1 14
*/
/*
#define REG_Flt2 15
*/
/*
#define REG_Flt3 16
*/
/*
#define REG_Flt4 17
*/
#define REG_Dbl1
fr
18
#define REG_Dbl2
fr
19
/*
#define REG_Dbl1 18
*/
/*
#define REG_Dbl2 19
*/
#define REG_SpA
r
22
#define REG_SuA
r
23
#define REG_SpB
r
24
#define REG_SuB
r
25
#define REG_SpA 22
#define REG_SuA 23
#define REG_SpB 24
#define REG_SuB 25
#define REG_Hp
r
26
#define REG_HpLim
r
27
#define REG_Hp 26
#define REG_HpLim 27
#define REG_Ret
r
28
#define REG_Ret 28
#define REG_StkStub
r
29
#define REG_StkStub 29
#endif /* SCAV_REG_MAP */
#endif /* SCAN_REG_MAP */
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment