Annotation of sys/arch/alpha/alpha/pal.s, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: pal.s,v 1.6 2000/11/08 19:16:59 ericj Exp $ */
2: /* $NetBSD: pal.s,v 1.14 1999/12/02 22:08:04 thorpej Exp $ */
3:
4: /*
5: * Copyright (c) 1994, 1995 Carnegie-Mellon University.
6: * All rights reserved.
7: *
8: * Author: Chris G. Demetriou
9: *
10: * Permission to use, copy, modify and distribute this software and
11: * its documentation is hereby granted, provided that both the copyright
12: * notice and this permission notice appear in all copies of the
13: * software, derivative works or modified versions, and any portions
14: * thereof, and that both notices appear in supporting documentation.
15: *
16: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
17: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
18: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19: *
20: * Carnegie Mellon requests users of this software to return to
21: *
22: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
23: * School of Computer Science
24: * Carnegie Mellon University
25: * Pittsburgh PA 15213-3890
26: *
27: * any improvements or extensions that they make and grant Carnegie the
28: * rights to redistribute these changes.
29: */
30:
31: /*
32: * The various OSF PALcode routines.
33: *
34: * The following code is originally derived from pages: (I) 6-5 - (I) 6-7
35: * and (III) 2-1 - (III) 2-25 of "Alpha Architecture Reference Manual" by
36: * Richard L. Sites.
37: *
38: * Updates taken from pages: (II-B) 2-1 - (II-B) 2-33 of "Alpha AXP
39: * Architecture Reference Manual, Second Edition" by Richard L. Sites
40: * and Richard T. Witek.
41: */
42:
43: inc2: .stabs __FILE__,132,0,0,inc2; .loc 1 __LINE__
44: /*
45: * alpha_amask: read architecture features (XXX INSTRUCTION, NOT PALcode OP)
46: *
47: * Arguments:
48: * a0 bitmask of features to test
49: *
50: * Returns:
51: * v0 bitmask - bit is _cleared_ if feature is supported
52: */
53: .text
54: LEAF(alpha_amask,1)
55: amask a0, v0
56: RET
57: END(alpha_amask)
58:
59: /*
60: * alpha_implver: read implementation version (XXX INSTRUCTION, NOT PALcode OP)
61: *
62: * Returns:
63: * v0 implementation version - see <machine/alpha_cpu.h>
64: */
65: .text
66: LEAF(alpha_implver,0)
67: #if 0
68: implver 0x1, v0
69: #else
70: .long 0x47e03d80 /* XXX gas(1) does the Wrong Thing */
71: #endif
72: RET
73: END(alpha_implver)
74:
75: /*
76: * alpha_pal_cflush: Cache flush [PRIVILEGED]
77: *
78: * Flush the entire physical page specified by the PFN specified in
79: * a0 from any data caches associated with the current processor.
80: *
81: * Arguments:
82: * a0 page frame number of page to flush
83: */
84: .text
85: LEAF(alpha_pal_cflush,1)
86: call_pal PAL_cflush
87: RET
88: END(alpha_pal_cflush)
89:
90: /*
91: * alpha_pal_halt: Halt the processor. [PRIVILEGED]
92: */
93: .text
94: LEAF(alpha_pal_halt,0)
95: call_pal PAL_halt
96: br zero,alpha_pal_halt /* Just in case */
97: RET
98: END(alpha_pal_halt)
99:
100: /*
101: * alpha_pal_rdps: Read processor status. [PRIVILEGED]
102: *
103: * Return:
104: * v0 current PS value
105: */
106: .text
107: LEAF(alpha_pal_rdps,0)
108: call_pal PAL_OSF1_rdps
109: RET
110: END(alpha_pal_rdps)
111:
112: /*
113: * alpha_pal_swpipl: Swap Interrupt priority level. [PRIVILEGED]
114: * _alpha_pal_swpipl: Same, from profiling code. [PRIVILEGED]
115: *
116: * Arguments:
117: * a0 new IPL
118: *
119: * Return:
120: * v0 old IPL
121: */
122: .text
123: LEAF(alpha_pal_swpipl,1)
124: call_pal PAL_OSF1_swpipl
125: RET
126: END(alpha_pal_swpipl)
127:
128: LEAF_NOPROFILE(_alpha_pal_swpipl,1)
129: call_pal PAL_OSF1_swpipl
130: RET
131: END(_alpha_pal_swpipl)
132:
133: /*
134: * alpha_pal_wrent: Write system entry address. [PRIVILEGED]
135: *
136: * Arguments:
137: * a0 new vector
138: * a1 vector selector
139: */
140: .text
141: LEAF(alpha_pal_wrent,2)
142: call_pal PAL_OSF1_wrent
143: RET
144: END(alpha_pal_wrent)
145:
146: /*
147: * alpha_pal_wrvptptr: Write virtual page table pointer. [PRIVILEGED]
148: *
149: * Arguments:
150: * a0 new virtual page table pointer
151: */
152: .text
153: LEAF(alpha_pal_wrvptptr,1)
154: call_pal PAL_OSF1_wrvptptr
155: RET
156: END(alpha_pal_wrvptptr)
CVSweb