OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [uclinux/] [uClinux-2.0.x/] [include/] [asm-or32/] [system.h] - Blame information for rev 666

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 666 simons
#ifndef _OR32_SYSTEM_H
2
#define _OR32_SYSTEM_H
3
 
4
#include <linux/config.h> /* get configuration macros */
5
#include <linux/linkage.h>
6
#include <asm/segment.h>
7
 
8
#include <asm/processor.h>
9
#include <asm/board.h>
10
 
11
extern int abs(int);
12
 
13
extern void __save_flags(unsigned long *flags);
14
extern void __restore_flags(unsigned long flags);
15
extern void sti(void);
16
extern void cli(void);
17
extern void mtspr(unsigned long add, unsigned long val);
18
extern unsigned long mfspr(unsigned long add);
19
extern void ic_enable(void);
20
extern void ic_disable(void);
21
extern void ic_invalidate(void);
22
extern void dc_enable(void);
23
extern void dc_disable(void);
24
extern void dc_line_invalidate(unsigned long);
25
extern void _print(const char *fmt, ...);
26
extern void _switch(struct thread_struct *, struct thread_struct *);
27
 
28
#define SYS_TICK_PER  0x10000
29
 
30
#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
31
#define tas(ptr) (xchg((ptr),1))
32
 
33
struct __xchg_dummy { unsigned long a[100]; };
34
#define __xg(x) ((volatile struct __xchg_dummy *)(x))
35
 
36
#define nop() __asm__ __volatile__ ("l.nop"::)
37
#define mb()  __asm__ __volatile__ (""   : : :"memory")
38
 
39
#define save_flags(x) __save_flags((unsigned long *)&(x))
40
#define restore_flags(x) __restore_flags((x))
41
 
42
static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
43
{
44
  unsigned long tmp, flags;
45
 
46
  save_flags(flags);
47
  cli();
48
 
49
  switch (size) {
50
  case 1:
51
    __asm__ __volatile__
52
    ("l.lbz %0,%2\n\t"
53
     "l.sb %2,%1"
54
    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
55
    break;
56
  case 2:
57
    __asm__ __volatile__
58
    ("l.lhz %0,%2\n\t"
59
     "l.sh %2,%1"
60
    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
61
    break;
62
  case 4:
63
    __asm__ __volatile__
64
    ("l.lwz %0,%2\n\t"
65
     "l.sw %2,%1"
66
    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
67
    break;
68
  }
69
 
70
  restore_flags(flags);
71
  return tmp;
72
}
73
 
74
#define HARD_RESET_NOW() ({             \
75
        cli();                          \
76
})
77
 
78
#endif /* _OR32_SYSTEM_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.