]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/sh/sshmedia.h
Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
[thirdparty/gcc.git] / gcc / config / sh / sshmedia.h
CommitLineData
748086b7 1/* Copyright (C) 2000, 2001, 2009 Free Software Foundation, Inc.
fa5322fa 2
7ec022b2 3This file is part of GCC.
fa5322fa 4
7ec022b2 5GCC is free software; you can redistribute it and/or modify
fa5322fa 6it under the terms of the GNU General Public License as published by
748086b7 7the Free Software Foundation; either version 3, or (at your option)
fa5322fa
AO
8any later version.
9
7ec022b2 10GCC is distributed in the hope that it will be useful,
fa5322fa
AO
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
748086b7
JJ
15Under Section 7 of GPL version 3, you are granted additional
16permissions described in the GCC Runtime Library Exception, version
173.1, as published by the Free Software Foundation.
18
19You should have received a copy of the GNU General Public License and
20a copy of the GCC Runtime Library Exception along with this program;
21see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22<http://www.gnu.org/licenses/>. */
23
fa5322fa
AO
24
25/* sshmedia.h: Intrinsics corresponding to SHmedia instructions that
26 may only be executed in privileged mode. */
27
28#ifndef _SSHMEDIA_H
29#define _SSHMEDIA_H
30
31#if __SHMEDIA__
73a4d10b
R
32__inline__ static unsigned long long sh_media_GETCON (unsigned int k)
33 __attribute__((always_inline));
34
fa5322fa
AO
35__inline__ static
36unsigned long long
37sh_media_GETCON (unsigned int k)
38{
39 unsigned long long res;
40 __asm__ __volatile__ ("getcon cr%1, %0" : "=r" (res) : "n" (k));
41 return res;
42}
43
73a4d10b
R
44__inline__ static void sh_media_PUTCON (unsigned long long mm, unsigned int k)
45 __attribute__((always_inline));
46
fa5322fa
AO
47__inline__ static
48void
49sh_media_PUTCON (unsigned long long mm, unsigned int k)
50{
51 __asm__ __volatile__ ("putcon %0, cr%1" : : "r" (mm), "n" (k));
52}
53
54__inline__ static
55unsigned long long
56sh_media_GETCFG (unsigned long long mm, int s)
57{
58 unsigned long long res;
59 __asm__ __volatile__ ("getcfg %1, %2, %0" : "=r" (res) : "r" (mm), "n" (s));
60 return res;
61}
62
63__inline__ static
64void
65sh_media_PUTCFG (unsigned long long mm, int s, unsigned long long mw)
66{
67 __asm__ __volatile__ ("putcfg %0, %1, %2" : : "r" (mm), "n" (s), "r" (mw));
68}
69
70__inline__ static
71void
72sh_media_SLEEP (void)
73{
74 __asm__ __volatile__ ("sleep");
75}
76#endif
77
78#endif