2 * Copyright (C) 1998-2003 Hewlett-Packard Co
3 * David Mosberger-Tang <davidm@hpl.hp.com>
6 #include <asm/asmmacro.h>
16 /* This needs to be defined because lib/string.c:strlcat() calls it in case of error... */
26 movl sp = stack_mem+16384-16
28 br.call.sptk.many rp=start_bootloader
32 * Set a break point on this function so that symbols are available to set breakpoints in
33 * the kernel being debugged.
35 GLOBAL_ENTRY(debug_break)
46 GLOBAL_ENTRY(jmp_to_kernel)
54 * r28 contains the index of the PAL function
56 * Return values in ret0--3 (r8--11)
58 GLOBAL_ENTRY(pal_emulator_static)
62 cmp.gtu p6,p7=r9,r28 /* r28 <= 255? */
63 (p6) br.cond.sptk.few static
68 (p6) br.cond.sptk.few stacked
70 static: cmp.eq p6,p7=PAL_PTCE_INFO,r28
71 (p7) br.cond.sptk.few 1f
73 mov r8=0 /* status = 0 */
74 movl r9=0x100000000 /* tc.base */
75 movl r10=0x0000000200000003 /* count[0], count[1] */
76 movl r11=0x1000000000002000 /* stride[0], stride[1] */
78 1: cmp.eq p6,p7=PAL_FREQ_RATIOS,r28
79 (p7) br.cond.sptk.few 1f
80 mov r8=0 /* status = 0 */
81 movl r9 =0x100000064 /* proc_ratio (1/100) */
82 movl r10=0x100000100 /* bus_ratio<<32 (1/256) */
83 movl r11=0x100000064 /* itc_ratio<<32 (1/100) */
85 1: cmp.eq p6,p7=PAL_RSE_INFO,r28
86 (p7) br.cond.sptk.few 1f
87 mov r8=0 /* status = 0 */
88 mov r9=96 /* num phys stacked */
92 1: cmp.eq p6,p7=PAL_CACHE_FLUSH,r28 /* PAL_CACHE_FLUSH */
93 (p7) br.cond.sptk.few 1f
95 movl r8=524288 /* flush 512k million cache lines (16MB) */
98 movl r8=0xe000000000000000
102 br.cloop.sptk.few .loop
110 1: cmp.eq p6,p7=PAL_PERF_MON_INFO,r28
111 (p7) br.cond.sptk.few 1f
112 mov r8=0 /* status = 0 */
113 movl r9 =0x08122f04 /* generic=4 width=47 retired=8 cycles=18 */
114 mov r10=0 /* reserved */
115 mov r11=0 /* reserved */
116 mov r16=0xffff /* implemented PMC */
117 mov r17=0x3ffff /* implemented PMD */
118 add r18=8,r29 /* second index */
120 st8 [r29]=r16,16 /* store implemented PMC */
121 st8 [r18]=r0,16 /* clear remaining bits */
123 st8 [r29]=r0,16 /* clear remaining bits */
124 st8 [r18]=r0,16 /* clear remaining bits */
126 st8 [r29]=r17,16 /* store implemented PMD */
127 st8 [r18]=r0,16 /* clear remaining bits */
128 mov r16=0xf0 /* cycles count capable PMC */
130 st8 [r29]=r0,16 /* clear remaining bits */
131 st8 [r18]=r0,16 /* clear remaining bits */
132 mov r17=0xf0 /* retired bundles capable PMC */
134 st8 [r29]=r16,16 /* store cycles capable */
135 st8 [r18]=r0,16 /* clear remaining bits */
137 st8 [r29]=r0,16 /* clear remaining bits */
138 st8 [r18]=r0,16 /* clear remaining bits */
140 st8 [r29]=r17,16 /* store retired bundle capable */
141 st8 [r18]=r0,16 /* clear remaining bits */
143 st8 [r29]=r0,16 /* clear remaining bits */
144 st8 [r18]=r0,16 /* clear remaining bits */
146 1: cmp.eq p6,p7=PAL_VM_SUMMARY,r28
147 (p7) br.cond.sptk.few 1f
148 mov r8=0 /* status = 0 */
149 movl r9=0x2044040020F1865 /* num_tc_levels=2, num_unique_tcs=4 */
150 /* max_itr_entry=64, max_dtr_entry=64 */
151 /* hash_tag_id=2, max_pkr=15 */
152 /* key_size=24, phys_add_size=50, vw=1 */
153 movl r10=0x183C /* rid_size=24, impl_va_msb=60 */
155 1: cmp.eq p6,p7=PAL_MEM_ATTRIB,r28
156 (p7) br.cond.sptk.few 1f
157 mov r8=0 /* status = 0 */
158 mov r9=0x80|0x01 /* NatPage|WB */
160 1: br.cond.sptk.few rp
163 END(pal_emulator_static)