Linux Audio

Check our new training course

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