Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/alpha/boot/head.S
10817 views
1
/*
2
* arch/alpha/boot/head.S
3
*
4
* initial bootloader stuff..
5
*/
6
7
#include <asm/system.h>
8
9
.set noreorder
10
.globl __start
11
.ent __start
12
__start:
13
br $29,2f
14
2: ldgp $29,0($29)
15
jsr $26,start_kernel
16
call_pal PAL_halt
17
.end __start
18
19
.align 5
20
.globl wrent
21
.ent wrent
22
wrent:
23
.prologue 0
24
call_pal PAL_wrent
25
ret ($26)
26
.end wrent
27
28
.align 5
29
.globl wrkgp
30
.ent wrkgp
31
wrkgp:
32
.prologue 0
33
call_pal PAL_wrkgp
34
ret ($26)
35
.end wrkgp
36
37
.align 5
38
.globl switch_to_osf_pal
39
.ent switch_to_osf_pal
40
switch_to_osf_pal:
41
subq $30,128,$30
42
.frame $30,128,$26
43
stq $26,0($30)
44
stq $1,8($30)
45
stq $2,16($30)
46
stq $3,24($30)
47
stq $4,32($30)
48
stq $5,40($30)
49
stq $6,48($30)
50
stq $7,56($30)
51
stq $8,64($30)
52
stq $9,72($30)
53
stq $10,80($30)
54
stq $11,88($30)
55
stq $12,96($30)
56
stq $13,104($30)
57
stq $14,112($30)
58
stq $15,120($30)
59
.prologue 0
60
61
stq $30,0($17) /* save KSP in PCB */
62
63
bis $30,$30,$20 /* a4 = KSP */
64
br $17,1f
65
66
ldq $26,0($30)
67
ldq $1,8($30)
68
ldq $2,16($30)
69
ldq $3,24($30)
70
ldq $4,32($30)
71
ldq $5,40($30)
72
ldq $6,48($30)
73
ldq $7,56($30)
74
ldq $8,64($30)
75
ldq $9,72($30)
76
ldq $10,80($30)
77
ldq $11,88($30)
78
ldq $12,96($30)
79
ldq $13,104($30)
80
ldq $14,112($30)
81
ldq $15,120($30)
82
addq $30,128,$30
83
ret ($26)
84
1: call_pal PAL_swppal
85
.end switch_to_osf_pal
86
87
.align 3
88
.globl tbi
89
.ent tbi
90
tbi:
91
.prologue 0
92
call_pal PAL_tbi
93
ret ($26)
94
.end tbi
95
96
.align 3
97
.globl halt
98
.ent halt
99
halt:
100
.prologue 0
101
call_pal PAL_halt
102
.end halt
103
104
/* $16 - new stack page */
105
.align 3
106
.globl move_stack
107
.ent move_stack
108
move_stack:
109
.prologue 0
110
lda $0, 0x1fff($31)
111
and $0, $30, $1 /* Stack offset */
112
or $1, $16, $16 /* New stack pointer */
113
mov $30, $1
114
mov $16, $2
115
1: ldq $3, 0($1) /* Move the stack */
116
addq $1, 8, $1
117
stq $3, 0($2)
118
and $0, $1, $4
119
addq $2, 8, $2
120
bne $4, 1b
121
mov $16, $30
122
ret ($26)
123
.end move_stack
124
125