]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - arch/alpha/boot/head.S
Merge remote-tracking branch 'regmap/topic/range' into regmap-next
[mirror_ubuntu-artful-kernel.git] / arch / alpha / boot / head.S
1 /*
2 * arch/alpha/boot/head.S
3 *
4 * initial bootloader stuff..
5 */
6
7 #include <asm/pal.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