Annotation of sys/arch/alpha/alpha/pal.s, Revision 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