1
2
3
4
5
6
7
8
9
10
11 #include <linux/init.h>
12 #include <asm/asm-offsets.h>
13 #include <asm/pal.h>
14 #include <asm/setup.h>
15
16 __HEAD
17 .globl _stext
18 .set noreorder
19 .globl __start
20 .ent __start
21 _stext:
22 __start:
23 .prologue 0
24 br $27,1f
25 1: ldgp $29,0($27)
26
27 lda $8,init_thread_union
28
29 lda $30,0x4000 - SIZEOF_PT_REGS($8)
30
31 jsr $26,start_kernel
32 call_pal PAL_halt
33 .end __start
34
35 #ifdef CONFIG_SMP
36 .align 3
37 .globl __smp_callin
38 .ent __smp_callin
39
40
41
42
43 __smp_callin:
44 .prologue 1
45 ldgp $29,0($27) # First order of business, load the GP.
46
47 call_pal PAL_rduniq # Grab the target PCBB.
48 mov $0,$16 # Install it.
49 call_pal PAL_swpctx
50
51 lda $8,0x3fff # Find "current".
52 bic $30,$8,$8
53
54 jsr $26,smp_callin
55 call_pal PAL_halt
56 .end __smp_callin
57 #endif
58
59 #
60
61
62
63 #
64
65 .align 3
66 .globl cserve_ena
67 .ent cserve_ena
68 cserve_ena:
69 .prologue 0
70 bis $16,$16,$17
71 lda $16,52($31)
72 call_pal PAL_cserve
73 ret ($26)
74 .end cserve_ena
75
76 .align 3
77 .globl cserve_dis
78 .ent cserve_dis
79 cserve_dis:
80 .prologue 0
81 bis $16,$16,$17
82 lda $16,53($31)
83 call_pal PAL_cserve
84 ret ($26)
85 .end cserve_dis
86
87 #
88
89
90
91 #
92
93 .align 3
94 .globl halt
95 .ent halt
96 halt:
97 .prologue 0
98 call_pal PAL_halt
99 .end halt