PageRenderTime 30ms CodeModel.GetById 16ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/ppc64/xmon/privinst.h

https://bitbucket.org/evzijst/gittest
C Header | 65 lines | 49 code | 8 blank | 8 comment | 0 complexity | aeb37051b96ad66d6a37d16d524cb6b9 MD5 | raw file
 1/*
 2 * Copyright (C) 1996 Paul Mackerras.
 3 *
 4 *      This program is free software; you can redistribute it and/or
 5 *      modify it under the terms of the GNU General Public License
 6 *      as published by the Free Software Foundation; either version
 7 *      2 of the License, or (at your option) any later version.
 8 */
 9
10#define GETREG(reg)		\
11    static inline unsigned long get_ ## reg (void)	\
12	{ unsigned long ret; asm volatile ("mf" #reg " %0" : "=r" (ret) :); return ret; }
13
14#define SETREG(reg)		\
15    static inline void set_ ## reg (unsigned long val)	\
16	{ asm volatile ("mt" #reg " %0" : : "r" (val)); }
17
18GETREG(msr)
19SETREG(msrd)
20GETREG(cr)
21
22#define GSETSPR(n, name)	\
23    static inline long get_ ## name (void) \
24	{ long ret; asm volatile ("mfspr %0," #n : "=r" (ret) : ); return ret; } \
25    static inline void set_ ## name (long val) \
26	{ asm volatile ("mtspr " #n ",%0" : : "r" (val)); }
27
28GSETSPR(0, mq)
29GSETSPR(1, xer)
30GSETSPR(4, rtcu)
31GSETSPR(5, rtcl)
32GSETSPR(8, lr)
33GSETSPR(9, ctr)
34GSETSPR(18, dsisr)
35GSETSPR(19, dar)
36GSETSPR(22, dec)
37GSETSPR(25, sdr1)
38GSETSPR(26, srr0)
39GSETSPR(27, srr1)
40GSETSPR(272, sprg0)
41GSETSPR(273, sprg1)
42GSETSPR(274, sprg2)
43GSETSPR(275, sprg3)
44GSETSPR(282, ear)
45GSETSPR(287, pvr)
46GSETSPR(1008, hid0)
47GSETSPR(1009, hid1)
48GSETSPR(1010, iabr)
49GSETSPR(1013, dabr)
50GSETSPR(1023, pir)
51
52static inline void store_inst(void *p)
53{
54	asm volatile ("dcbst 0,%0; sync; icbi 0,%0; isync" : : "r" (p));
55}
56
57static inline void cflush(void *p)
58{
59	asm volatile ("dcbf 0,%0; icbi 0,%0" : : "r" (p));
60}
61
62static inline void cinval(void *p)
63{
64	asm volatile ("dcbi 0,%0; icbi 0,%0" : : "r" (p));
65}