License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / arch / ia64 / hp / sim / boot / boot_head.S
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
1da177e4
LT
2/*
3 * Copyright (C) 1998-2003 Hewlett-Packard Co
4 * David Mosberger-Tang <davidm@hpl.hp.com>
5 */
6
7#include <asm/asmmacro.h>
dc90e95f 8#include <asm/pal.h>
1da177e4
LT
9
10 .bss
11 .align 16
12stack_mem:
13 .skip 16834
14
15 .text
16
17/* This needs to be defined because lib/string.c:strlcat() calls it in case of error... */
18GLOBAL_ENTRY(printk)
19 break 0
20END(printk)
21
22GLOBAL_ENTRY(_start)
23 .prologue
24 .save rp, r0
25 .body
26 movl gp = __gp
a4cce104 27 movl sp = stack_mem+16384-16
1da177e4
LT
28 bsw.1
29 br.call.sptk.many rp=start_bootloader
5d36aa9b 300: nop 0 /* dummy nop to make unwinding work */
1da177e4
LT
31END(_start)
32
33/*
34 * Set a break point on this function so that symbols are available to set breakpoints in
35 * the kernel being debugged.
36 */
37GLOBAL_ENTRY(debug_break)
38 br.ret.sptk.many b0
39END(debug_break)
40
41GLOBAL_ENTRY(ssc)
42 .regstk 5,0,0,0
43 mov r15=in4
44 break 0x80001
45 br.ret.sptk.many b0
46END(ssc)
47
48GLOBAL_ENTRY(jmp_to_kernel)
49 .regstk 2,0,0,0
50 mov r28=in0
51 mov b7=in1
52 br.sptk.few b7
53END(jmp_to_kernel)
54
dc90e95f
PC
55/*
56 * r28 contains the index of the PAL function
57 * r29--31 the args
58 * Return values in ret0--3 (r8--11)
59 */
1da177e4
LT
60GLOBAL_ENTRY(pal_emulator_static)
61 mov r8=-1
62 mov r9=256
63 ;;
64 cmp.gtu p6,p7=r9,r28 /* r28 <= 255? */
65(p6) br.cond.sptk.few static
66 ;;
67 mov r9=512
68 ;;
69 cmp.gtu p6,p7=r9,r28
70(p6) br.cond.sptk.few stacked
71 ;;
dc90e95f 72static: cmp.eq p6,p7=PAL_PTCE_INFO,r28
1da177e4
LT
73(p7) br.cond.sptk.few 1f
74 ;;
75 mov r8=0 /* status = 0 */
76 movl r9=0x100000000 /* tc.base */
77 movl r10=0x0000000200000003 /* count[0], count[1] */
78 movl r11=0x1000000000002000 /* stride[0], stride[1] */
79 br.cond.sptk.few rp
dc90e95f 801: cmp.eq p6,p7=PAL_FREQ_RATIOS,r28
1da177e4
LT
81(p7) br.cond.sptk.few 1f
82 mov r8=0 /* status = 0 */
83 movl r9 =0x100000064 /* proc_ratio (1/100) */
84 movl r10=0x100000100 /* bus_ratio<<32 (1/256) */
85 movl r11=0x100000064 /* itc_ratio<<32 (1/100) */
86 ;;
dc90e95f 871: cmp.eq p6,p7=PAL_RSE_INFO,r28
1da177e4
LT
88(p7) br.cond.sptk.few 1f
89 mov r8=0 /* status = 0 */
90 mov r9=96 /* num phys stacked */
91 mov r10=0 /* hints */
92 mov r11=0
93 br.cond.sptk.few rp
dc90e95f 941: cmp.eq p6,p7=PAL_CACHE_FLUSH,r28 /* PAL_CACHE_FLUSH */
1da177e4
LT
95(p7) br.cond.sptk.few 1f
96 mov r9=ar.lc
97 movl r8=524288 /* flush 512k million cache lines (16MB) */
98 ;;
99 mov ar.lc=r8
100 movl r8=0xe000000000000000
101 ;;
102.loop: fc r8
103 add r8=32,r8
104 br.cloop.sptk.few .loop
105 sync.i
106 ;;
107 srlz.i
108 ;;
109 mov ar.lc=r9
110 mov r8=r0
111 ;;
dc90e95f 1121: cmp.eq p6,p7=PAL_PERF_MON_INFO,r28
1da177e4
LT
113(p7) br.cond.sptk.few 1f
114 mov r8=0 /* status = 0 */
115 movl r9 =0x08122f04 /* generic=4 width=47 retired=8 cycles=18 */
116 mov r10=0 /* reserved */
117 mov r11=0 /* reserved */
118 mov r16=0xffff /* implemented PMC */
119 mov r17=0x3ffff /* implemented PMD */
120 add r18=8,r29 /* second index */
121 ;;
122 st8 [r29]=r16,16 /* store implemented PMC */
123 st8 [r18]=r0,16 /* clear remaining bits */
124 ;;
125 st8 [r29]=r0,16 /* clear remaining bits */
126 st8 [r18]=r0,16 /* clear remaining bits */
127 ;;
128 st8 [r29]=r17,16 /* store implemented PMD */
129 st8 [r18]=r0,16 /* clear remaining bits */
130 mov r16=0xf0 /* cycles count capable PMC */
131 ;;
132 st8 [r29]=r0,16 /* clear remaining bits */
133 st8 [r18]=r0,16 /* clear remaining bits */
134 mov r17=0xf0 /* retired bundles capable PMC */
135 ;;
136 st8 [r29]=r16,16 /* store cycles capable */
137 st8 [r18]=r0,16 /* clear remaining bits */
138 ;;
139 st8 [r29]=r0,16 /* clear remaining bits */
140 st8 [r18]=r0,16 /* clear remaining bits */
141 ;;
142 st8 [r29]=r17,16 /* store retired bundle capable */
143 st8 [r18]=r0,16 /* clear remaining bits */
144 ;;
145 st8 [r29]=r0,16 /* clear remaining bits */
146 st8 [r18]=r0,16 /* clear remaining bits */
147 ;;
dc90e95f
PC
1481: cmp.eq p6,p7=PAL_VM_SUMMARY,r28
149(p7) br.cond.sptk.few 1f
150 mov r8=0 /* status = 0 */
151 movl r9=0x2044040020F1865 /* num_tc_levels=2, num_unique_tcs=4 */
152 /* max_itr_entry=64, max_dtr_entry=64 */
153 /* hash_tag_id=2, max_pkr=15 */
154 /* key_size=24, phys_add_size=50, vw=1 */
155 movl r10=0x183C /* rid_size=24, impl_va_msb=60 */
156 ;;
1571: cmp.eq p6,p7=PAL_MEM_ATTRIB,r28
158(p7) br.cond.sptk.few 1f
159 mov r8=0 /* status = 0 */
160 mov r9=0x80|0x01 /* NatPage|WB */
161 ;;
1da177e4
LT
1621: br.cond.sptk.few rp
163stacked:
164 br.ret.sptk.few rp
165END(pal_emulator_static)