blob: 8b1981e714c9a5dfc74680589f6a768f9cf1ffef [file] [log] [blame]
Tony SIM1d7a8942010-01-28 17:04:55 +09001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef __ASM_SH_SYSTEM_H
13#define __ASM_SH_SYSTEM_H
14
15#include <linux/irqflags.h>
16#include <linux/compiler.h>
17#include <linux/linkage.h>
18#include <asm/types.h>
19#include <asm/ptrace.h>
20
21#define AT_VECTOR_SIZE_ARCH 5
22
23#define __icbi() { unsigned long __addr; __addr = 0xa8000000; __asm__ __volatile__( "icbi %0\n\t" : : "m" (__m(__addr))); }
24
25#define mb() __asm__ __volatile__ ("synco": : :"memory")
26#define rmb() mb()
27#define wmb() __asm__ __volatile__ ("synco": : :"memory")
28#define ctrl_barrier() __icbi()
29#define read_barrier_depends() do { } while(0)
30
31#define smp_mb() barrier()
32#define smp_rmb() barrier()
33#define smp_wmb() barrier()
34#define smp_read_barrier_depends() do { } while(0)
35
36#define set_mb(var, value) do { (void)xchg(&var, value); } while (0)
37
38#include <asm/cmpxchg-irq.h>
39
40#define __xchg(ptr, x, size) ({ unsigned long __xchg__res; volatile void *__xchg_ptr = (ptr); switch (size) { case 4: __xchg__res = xchg_u32(__xchg_ptr, x); break; case 1: __xchg__res = xchg_u8(__xchg_ptr, x); break; default: __xchg_called_with_bad_pointer(); __xchg__res = x; break; } __xchg__res; })
41
42#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr))))
43
44#define __HAVE_ARCH_CMPXCHG 1
45
46#define cmpxchg(ptr,o,n) ({ __typeof__(*(ptr)) _o_ = (o); __typeof__(*(ptr)) _n_ = (n); (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, (unsigned long)_n_, sizeof(*(ptr))); })
47
48#define instruction_size(insn) (2)
49
50#define BUILD_TRAP_HANDLER(name) asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7, struct pt_regs __regs)
51
52#define TRAP_HANDLER_DECL struct pt_regs *regs = RELOC_HIDE(&__regs, 0); unsigned int vec = regs->tra; (void)vec;
53
54#define arch_align_stack(x) (x)
55
56struct mem_access {
57 unsigned long (*from)(void *dst, const void *src, unsigned long cnt);
58 unsigned long (*to)(void *dst, const void *src, unsigned long cnt);
59};
60
61#include "system_32.h"
62
63#endif