Print this page
8956 Implement KPTI
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/uts/intel/asm/htable.h
+++ new/usr/src/uts/intel/asm/htable.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
↓ open down ↓ |
14 lines elided |
↑ open up ↑ |
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
17 17 * fields enclosed by brackets "[]" replaced with your own identifying
18 18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 19 *
20 20 * CDDL HEADER END
21 21 */
22 22 /*
23 23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 + *
26 + * Copyright 2018 Joyent, Inc.
25 27 */
26 28
27 29 #ifndef _ASM_HTABLE_H
28 30 #define _ASM_HTABLE_H
29 31
30 32 #include <sys/ccompile.h>
31 33 #include <sys/types.h>
32 34
33 35 #ifdef __cplusplus
34 36 extern "C" {
35 37 #endif
36 38
37 39 #if !defined(__lint) && defined(__GNUC__)
38 40
39 -#if defined(__i386) || defined(__amd64)
40 -
41 41 /*
42 42 * This set of atomic operations are designed primarily
43 43 * for some ia32 hat layer operations.
44 44 */
45 45
46 46 extern __GNU_INLINE void
47 47 atomic_orb(uint8_t *addr, uint8_t value)
48 48 {
49 49 __asm__ __volatile__(
50 50 "lock; orb %%dl,%0"
51 51 : "=m" (*addr)
52 52 : "d" (value), "m" (*addr)
53 53 : "cc");
54 54 }
55 55
56 56 extern __GNU_INLINE void
57 57 atomic_andb(uint8_t *addr, uint8_t value)
58 58 {
59 59 __asm__ __volatile__(
60 60 "lock; andb %%dl,%0"
61 61 : "=m" (*addr)
62 62 : "d" (value), "m" (*addr)
63 63 : "cc");
64 64 }
65 65
66 66 extern __GNU_INLINE void
67 67 atomic_inc16(uint16_t *addr)
68 68 {
69 69 __asm__ __volatile__(
70 70 "lock; incw %0"
71 71 : "=m" (*addr)
72 72 : "m" (*addr)
73 73 : "cc");
74 74 }
75 75
↓ open down ↓ |
25 lines elided |
↑ open up ↑ |
76 76 extern __GNU_INLINE void
77 77 atomic_dec16(uint16_t *addr)
78 78 {
79 79 __asm__ __volatile__(
80 80 "lock; decw %0"
81 81 : "=m" (*addr)
82 82 : "m" (*addr)
83 83 : "cc");
84 84 }
85 85
86 -extern __GNU_INLINE void
87 -mmu_tlbflush_entry(caddr_t addr)
88 -{
89 - __asm__ __volatile__(
90 - "invlpg %0"
91 - : "=m" (*addr)
92 - : "m" (*addr));
93 -}
94 -
95 -#endif /* __i386 || __amd64 */
96 -
97 86 #endif /* !__lint && __GNUC__ */
98 87
99 88 #ifdef __cplusplus
100 89 }
101 90 #endif
102 91
103 92 #endif /* _ASM_HTABLE_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX