1#ifndef __ASM_CRIS_ARCH_SYSTEM_H
2#define __ASM_CRIS_ARCH_SYSTEM_H
3
4
5/* read the CPU version register */
6
7static inline unsigned long rdvr(void) {
8	unsigned char vr;
9	__asm__ volatile ("move $vr,%0" : "=rm" (vr));
10	return vr;
11}
12
13#define cris_machine_name "cris"
14
15/* read/write the user-mode stackpointer */
16
17static inline unsigned long rdusp(void) {
18	unsigned long usp;
19	__asm__ __volatile__("move $usp,%0" : "=rm" (usp));
20	return usp;
21}
22
23#define wrusp(usp) \
24	__asm__ __volatile__("move %0,$usp" : /* no outputs */ : "rm" (usp))
25
26/* read the current stackpointer */
27
28static inline unsigned long rdsp(void) {
29	unsigned long sp;
30	__asm__ __volatile__("move.d $sp,%0" : "=rm" (sp));
31	return sp;
32}
33
34static inline unsigned long _get_base(char * addr)
35{
36  return 0;
37}
38
39#define nop() __asm__ __volatile__ ("nop");
40
41#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
42#define tas(ptr) (xchg((ptr),1))
43
44struct __xchg_dummy { unsigned long a[100]; };
45#define __xg(x) ((struct __xchg_dummy *)(x))
46
47#endif
48