]> git.saurik.com Git - apple/xnu.git/blame - pexpert/i386/pe_spl.c
xnu-792.12.6.tar.gz
[apple/xnu.git] / pexpert / i386 / pe_spl.c
CommitLineData
1c79356b
A
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
8ad349bb 4 * @APPLE_LICENSE_OSREFERENCE_HEADER_START@
1c79356b 5 *
8ad349bb
A
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the
10 * License may not be used to create, or enable the creation or
11 * redistribution of, unlawful or unlicensed copies of an Apple operating
12 * system, or to circumvent, violate, or enable the circumvention or
13 * violation of, any terms of an Apple operating system software license
14 * agreement.
15 *
16 * Please obtain a copy of the License at
17 * http://www.opensource.apple.com/apsl/ and read it before using this
18 * file.
19 *
20 * The Original Code and all software distributed under the License are
21 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
22 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
23 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
25 * Please see the License for the specific language governing rights and
26 * limitations under the License.
27 *
28 * @APPLE_LICENSE_OSREFERENCE_HEADER_END@
1c79356b
A
29 */
30#include <pexpert/protos.h>
31
32
33typedef unsigned long spl_t;
34
35spl_t PE_set_spl(spl_t x);
36
37spl_t splhi() { return PE_set_spl(8); }
38spl_t splhigh() { return PE_set_spl(8); }
39spl_t splclock() { return PE_set_spl(8); }
40spl_t splvm() { return PE_set_spl(8); }
41spl_t splsched() { return PE_set_spl(8); }
42spl_t splimp() { return PE_set_spl(6); }
43void splx(spl_t x) { (void) PE_set_spl(x); }
44spl_t splnet() { return PE_set_spl(6); }
45void spllo() { (void) PE_set_spl(0); }
46spl_t spl1() { return PE_set_spl(1); }
47spl_t spl2() { return PE_set_spl(2); }
48spl_t spl3() { return PE_set_spl(3); }
49spl_t spl4() { return PE_set_spl(4); }
50spl_t spl5() { return PE_set_spl(5); }
51spl_t spl6() { return PE_set_spl(6); }
52spl_t splbio() { return PE_set_spl(5); }
53spl_t spltty() { return PE_set_spl(6); }
54
55spl_t sploff() { return PE_set_spl(8); }
56void splon(spl_t x) { (void) PE_set_spl(x); }
57
58spl_t PE_set_spl(spl_t lvl)
59{
60 spl_t old_level;
61 int mycpu;
62
63
64 __asm__ volatile("cli");
65
66 mycpu = cpu_number();
67 old_level = cpu_data[mycpu].spl_level;
68 cpu_data[mycpu].spl_level = lvl ;
69
70 if (!lvl) __asm__ volatile("sti");
71
72 return old_level;
73}
74
75void PE_set_spl_no_interrupt(spl_t lvl)
76{
77 int mycpu;
78
79 __asm__ volatile("cli");
80
81 mycpu = cpu_number();
82 cpu_data[mycpu].spl_level = lvl ;
83
84 return;
85}
86