summaryrefslogtreecommitdiff
path: root/rts/StgCRunAsm.S
blob: bb860ca287cb49ebd46a450ad68882d2328793f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "ghcconfig.h"
#include "rts/Constants.h"
#ifdef powerpc64le_HOST_ARCH
#ifdef linux_HOST_OS
#define STACK_FRAME_SIZE RESERVED_C_STACK_BYTES+304
	.file	"StgCRun.c"
	.abiversion 2
	.section	".toc","aw"
	.section	".text"
	.align 2
.globl StgRun
.hidden StgRun
.type StgRun,@function
StgRun:
.localentry StgRun,.-StgRun
	mflr 0
	mr 5, 1
	std 0, 16(1)
	stdu 1, -(STACK_FRAME_SIZE)(1)
	std 2, -296(5)
	std 14, -288(5)
	std 15, -280(5)
	std 16, -272(5)
	std 17, -264(5)
	std 18, -256(5)
	std 19, -248(5)
	std 20, -240(5)
	std 21, -232(5)
	std 22, -224(5)
	std 23, -216(5)
	std 24, -208(5)
	std 25, -200(5)
	std 26, -192(5)
	std 27, -184(5)
	std 28, -176(5)
	std 29, -168(5)
	std 30, -160(5)
	std 31, -152(5)
	stfd 14, -144(5)
	stfd 15, -136(5)
	stfd 16, -128(5)
	stfd 17, -120(5)
	stfd 18, -112(5)
	stfd 19, -104(5)
	stfd 20, -96(5)
	stfd 21, -88(5)
	stfd 22, -80(5)
	stfd 23, -72(5)
	stfd 24, -64(5)
	stfd 25, -56(5)
	stfd 26, -48(5)
	stfd 27, -40(5)
	stfd 28, -32(5)
	stfd 29, -24(5)
	stfd 30, -16(5)
	stfd 31, -8(5)
	mr 27, 4
	mtctr 3
	mr 12, 3
	bctr
.globl StgReturn
.type StgReturn,@function
StgReturn:
.localentry StgReturn,.-StgReturn
	mr 3,14
	la 5, STACK_FRAME_SIZE(1)
	ld 2, -296(5)
	ld 14, -288(5)
	ld 15, -280(5)
	ld 16, -272(5)
	ld 17, -264(5)
	ld 18, -256(5)
	ld 19, -248(5)
	ld 20, -240(5)
	ld 21, -232(5)
	ld 22, -224(5)
	ld 23, -216(5)
	ld 24, -208(5)
	ld 25, -200(5)
	ld 26, -192(5)
	ld 27, -184(5)
	ld 28, -176(5)
	ld 29, -168(5)
	ld 30, -160(5)
	ld 31, -152(5)
	lfd 14, -144(5)
	lfd 15, -136(5)
	lfd 16, -128(5)
	lfd 17, -120(5)
	lfd 18, -112(5)
	lfd 19, -104(5)
	lfd 20, -96(5)
	lfd 21, -88(5)
	lfd 22, -80(5)
	lfd 23, -72(5)
	lfd 24, -64(5)
	lfd 25, -56(5)
	lfd 26, -48(5)
	lfd 27, -40(5)
	lfd 28, -32(5)
	lfd 29, -24(5)
	lfd 30, -16(5)
	lfd 31, -8(5)
	mr 1, 5
	ld 0, 16(1)
	mtlr 0
	blr

	.section	.note.GNU-stack,"",@progbits
#else // linux_HOST_OS
#error Only Linux support for power64 little endian right now.
#endif

#endif