diff options
Diffstat (limited to 'arch/microblaze/include')
-rw-r--r-- | arch/microblaze/include/asm/atomic.h | 1 | ||||
-rw-r--r-- | arch/microblaze/include/asm/barrier.h | 27 | ||||
-rw-r--r-- | arch/microblaze/include/asm/cmpxchg.h | 40 | ||||
-rw-r--r-- | arch/microblaze/include/asm/exec.h | 14 | ||||
-rw-r--r-- | arch/microblaze/include/asm/page.h | 2 | ||||
-rw-r--r-- | arch/microblaze/include/asm/processor.h | 11 | ||||
-rw-r--r-- | arch/microblaze/include/asm/setup.h | 6 | ||||
-rw-r--r-- | arch/microblaze/include/asm/switch_to.h | 24 | ||||
-rw-r--r-- | arch/microblaze/include/asm/system.h | 98 |
9 files changed, 124 insertions, 99 deletions
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h index 615f53992c65..472d8bf726df 100644 --- a/arch/microblaze/include/asm/atomic.h +++ b/arch/microblaze/include/asm/atomic.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_MICROBLAZE_ATOMIC_H | 1 | #ifndef _ASM_MICROBLAZE_ATOMIC_H |
2 | #define _ASM_MICROBLAZE_ATOMIC_H | 2 | #define _ASM_MICROBLAZE_ATOMIC_H |
3 | 3 | ||
4 | #include <asm/cmpxchg.h> | ||
4 | #include <asm-generic/atomic.h> | 5 | #include <asm-generic/atomic.h> |
5 | #include <asm-generic/atomic64.h> | 6 | #include <asm-generic/atomic64.h> |
6 | 7 | ||
diff --git a/arch/microblaze/include/asm/barrier.h b/arch/microblaze/include/asm/barrier.h new file mode 100644 index 000000000000..df5be3e87044 --- /dev/null +++ b/arch/microblaze/include/asm/barrier.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_BARRIER_H | ||
10 | #define _ASM_MICROBLAZE_BARRIER_H | ||
11 | |||
12 | #define nop() asm volatile ("nop") | ||
13 | |||
14 | #define smp_read_barrier_depends() do {} while (0) | ||
15 | #define read_barrier_depends() do {} while (0) | ||
16 | |||
17 | #define mb() barrier() | ||
18 | #define rmb() mb() | ||
19 | #define wmb() mb() | ||
20 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
21 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
22 | |||
23 | #define smp_mb() mb() | ||
24 | #define smp_rmb() rmb() | ||
25 | #define smp_wmb() wmb() | ||
26 | |||
27 | #endif /* _ASM_MICROBLAZE_BARRIER_H */ | ||
diff --git a/arch/microblaze/include/asm/cmpxchg.h b/arch/microblaze/include/asm/cmpxchg.h new file mode 100644 index 000000000000..0094859abd9b --- /dev/null +++ b/arch/microblaze/include/asm/cmpxchg.h | |||
@@ -0,0 +1,40 @@ | |||
1 | #ifndef _ASM_MICROBLAZE_CMPXCHG_H | ||
2 | #define _ASM_MICROBLAZE_CMPXCHG_H | ||
3 | |||
4 | void __bad_xchg(volatile void *ptr, int size); | ||
5 | |||
6 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | ||
7 | int size) | ||
8 | { | ||
9 | unsigned long ret; | ||
10 | unsigned long flags; | ||
11 | |||
12 | switch (size) { | ||
13 | case 1: | ||
14 | local_irq_save(flags); | ||
15 | ret = *(volatile unsigned char *)ptr; | ||
16 | *(volatile unsigned char *)ptr = x; | ||
17 | local_irq_restore(flags); | ||
18 | break; | ||
19 | |||
20 | case 4: | ||
21 | local_irq_save(flags); | ||
22 | ret = *(volatile unsigned long *)ptr; | ||
23 | *(volatile unsigned long *)ptr = x; | ||
24 | local_irq_restore(flags); | ||
25 | break; | ||
26 | default: | ||
27 | __bad_xchg(ptr, size), ret = 0; | ||
28 | break; | ||
29 | } | ||
30 | |||
31 | return ret; | ||
32 | } | ||
33 | |||
34 | #define xchg(ptr, x) \ | ||
35 | ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
36 | |||
37 | #include <asm-generic/cmpxchg.h> | ||
38 | #include <asm-generic/cmpxchg-local.h> | ||
39 | |||
40 | #endif /* _ASM_MICROBLAZE_CMPXCHG_H */ | ||
diff --git a/arch/microblaze/include/asm/exec.h b/arch/microblaze/include/asm/exec.h new file mode 100644 index 000000000000..e750de1fe8fb --- /dev/null +++ b/arch/microblaze/include/asm/exec.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_EXEC_H | ||
10 | #define _ASM_MICROBLAZE_EXEC_H | ||
11 | |||
12 | #define arch_align_stack(x) (x) | ||
13 | |||
14 | #endif /* _ASM_MICROBLAZE_EXEC_H */ | ||
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h index 352cc2352bd5..287c5485d286 100644 --- a/arch/microblaze/include/asm/page.h +++ b/arch/microblaze/include/asm/page.h | |||
@@ -138,6 +138,8 @@ extern unsigned long memory_start; | |||
138 | extern unsigned long memory_size; | 138 | extern unsigned long memory_size; |
139 | extern unsigned long lowmem_size; | 139 | extern unsigned long lowmem_size; |
140 | 140 | ||
141 | extern unsigned long kernel_tlb; | ||
142 | |||
141 | extern int page_is_ram(unsigned long pfn); | 143 | extern int page_is_ram(unsigned long pfn); |
142 | 144 | ||
143 | # define phys_to_pfn(phys) (PFN_DOWN(phys)) | 145 | # define phys_to_pfn(phys) (PFN_DOWN(phys)) |
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h index 7283bfb2f7e4..510a8e1c16ba 100644 --- a/arch/microblaze/include/asm/processor.h +++ b/arch/microblaze/include/asm/processor.h | |||
@@ -125,7 +125,6 @@ struct thread_struct { | |||
125 | .pgdir = swapper_pg_dir, \ | 125 | .pgdir = swapper_pg_dir, \ |
126 | } | 126 | } |
127 | 127 | ||
128 | |||
129 | /* Free all resources held by a thread. */ | 128 | /* Free all resources held by a thread. */ |
130 | extern inline void release_thread(struct task_struct *dead_task) | 129 | extern inline void release_thread(struct task_struct *dead_task) |
131 | { | 130 | { |
@@ -144,6 +143,8 @@ static inline void exit_thread(void) | |||
144 | 143 | ||
145 | unsigned long get_wchan(struct task_struct *p); | 144 | unsigned long get_wchan(struct task_struct *p); |
146 | 145 | ||
146 | extern void ret_from_fork(void); | ||
147 | |||
147 | /* The size allocated for kernel stacks. This _must_ be a power of two! */ | 148 | /* The size allocated for kernel stacks. This _must_ be a power of two! */ |
148 | # define KERNEL_STACK_SIZE 0x2000 | 149 | # define KERNEL_STACK_SIZE 0x2000 |
149 | 150 | ||
@@ -166,6 +167,14 @@ unsigned long get_wchan(struct task_struct *p); | |||
166 | # define STACK_TOP TASK_SIZE | 167 | # define STACK_TOP TASK_SIZE |
167 | # define STACK_TOP_MAX STACK_TOP | 168 | # define STACK_TOP_MAX STACK_TOP |
168 | 169 | ||
170 | void disable_hlt(void); | ||
171 | void enable_hlt(void); | ||
172 | void default_idle(void); | ||
173 | |||
174 | #ifdef CONFIG_DEBUG_FS | ||
175 | extern struct dentry *of_debugfs_root; | ||
176 | #endif | ||
177 | |||
169 | # endif /* __ASSEMBLY__ */ | 178 | # endif /* __ASSEMBLY__ */ |
170 | # endif /* CONFIG_MMU */ | 179 | # endif /* CONFIG_MMU */ |
171 | #endif /* _ASM_MICROBLAZE_PROCESSOR_H */ | 180 | #endif /* _ASM_MICROBLAZE_PROCESSOR_H */ |
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h index 9f195c094731..0061aa13a340 100644 --- a/arch/microblaze/include/asm/setup.h +++ b/arch/microblaze/include/asm/setup.h | |||
@@ -20,6 +20,8 @@ extern unsigned int boot_cpuid; /* move to smp.h */ | |||
20 | 20 | ||
21 | extern char cmd_line[COMMAND_LINE_SIZE]; | 21 | extern char cmd_line[COMMAND_LINE_SIZE]; |
22 | 22 | ||
23 | extern char *klimit; | ||
24 | |||
23 | void early_printk(const char *fmt, ...); | 25 | void early_printk(const char *fmt, ...); |
24 | 26 | ||
25 | int setup_early_printk(char *opt); | 27 | int setup_early_printk(char *opt); |
@@ -47,6 +49,10 @@ void machine_shutdown(void); | |||
47 | void machine_halt(void); | 49 | void machine_halt(void); |
48 | void machine_power_off(void); | 50 | void machine_power_off(void); |
49 | 51 | ||
52 | void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
53 | extern void *alloc_maybe_bootmem(size_t size, gfp_t mask); | ||
54 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
55 | |||
50 | # endif/* __KERNEL__ */ | 56 | # endif/* __KERNEL__ */ |
51 | # endif /* __ASSEMBLY__ */ | 57 | # endif /* __ASSEMBLY__ */ |
52 | #endif /* _ASM_MICROBLAZE_SETUP_H */ | 58 | #endif /* _ASM_MICROBLAZE_SETUP_H */ |
diff --git a/arch/microblaze/include/asm/switch_to.h b/arch/microblaze/include/asm/switch_to.h new file mode 100644 index 000000000000..f45baa2c5e09 --- /dev/null +++ b/arch/microblaze/include/asm/switch_to.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_SWITCH_TO_H | ||
10 | #define _ASM_MICROBLAZE_SWITCH_TO_H | ||
11 | |||
12 | struct task_struct; | ||
13 | struct thread_info; | ||
14 | |||
15 | extern struct task_struct *_switch_to(struct thread_info *prev, | ||
16 | struct thread_info *next); | ||
17 | |||
18 | #define switch_to(prev, next, last) \ | ||
19 | do { \ | ||
20 | (last) = _switch_to(task_thread_info(prev), \ | ||
21 | task_thread_info(next)); \ | ||
22 | } while (0) | ||
23 | |||
24 | #endif /* _ASM_MICROBLAZE_SWITCH_TO_H */ | ||
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h deleted file mode 100644 index 01228d2b1351..000000000000 --- a/arch/microblaze/include/asm/system.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_SYSTEM_H | ||
10 | #define _ASM_MICROBLAZE_SYSTEM_H | ||
11 | |||
12 | #include <asm/registers.h> | ||
13 | #include <asm/setup.h> | ||
14 | #include <asm/irqflags.h> | ||
15 | #include <asm/cache.h> | ||
16 | |||
17 | #include <asm-generic/cmpxchg.h> | ||
18 | #include <asm-generic/cmpxchg-local.h> | ||
19 | |||
20 | struct task_struct; | ||
21 | struct thread_info; | ||
22 | |||
23 | extern struct task_struct *_switch_to(struct thread_info *prev, | ||
24 | struct thread_info *next); | ||
25 | |||
26 | #define switch_to(prev, next, last) \ | ||
27 | do { \ | ||
28 | (last) = _switch_to(task_thread_info(prev), \ | ||
29 | task_thread_info(next)); \ | ||
30 | } while (0) | ||
31 | |||
32 | #define smp_read_barrier_depends() do {} while (0) | ||
33 | #define read_barrier_depends() do {} while (0) | ||
34 | |||
35 | #define nop() asm volatile ("nop") | ||
36 | #define mb() barrier() | ||
37 | #define rmb() mb() | ||
38 | #define wmb() mb() | ||
39 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
40 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
41 | |||
42 | #define smp_mb() mb() | ||
43 | #define smp_rmb() rmb() | ||
44 | #define smp_wmb() wmb() | ||
45 | |||
46 | void __bad_xchg(volatile void *ptr, int size); | ||
47 | |||
48 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | ||
49 | int size) | ||
50 | { | ||
51 | unsigned long ret; | ||
52 | unsigned long flags; | ||
53 | |||
54 | switch (size) { | ||
55 | case 1: | ||
56 | local_irq_save(flags); | ||
57 | ret = *(volatile unsigned char *)ptr; | ||
58 | *(volatile unsigned char *)ptr = x; | ||
59 | local_irq_restore(flags); | ||
60 | break; | ||
61 | |||
62 | case 4: | ||
63 | local_irq_save(flags); | ||
64 | ret = *(volatile unsigned long *)ptr; | ||
65 | *(volatile unsigned long *)ptr = x; | ||
66 | local_irq_restore(flags); | ||
67 | break; | ||
68 | default: | ||
69 | __bad_xchg(ptr, size), ret = 0; | ||
70 | break; | ||
71 | } | ||
72 | |||
73 | return ret; | ||
74 | } | ||
75 | |||
76 | void disable_hlt(void); | ||
77 | void enable_hlt(void); | ||
78 | void default_idle(void); | ||
79 | |||
80 | #define xchg(ptr, x) \ | ||
81 | ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
82 | |||
83 | void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
84 | void free_initmem(void); | ||
85 | extern char *klimit; | ||
86 | extern unsigned long kernel_tlb; | ||
87 | extern void ret_from_fork(void); | ||
88 | |||
89 | extern void *alloc_maybe_bootmem(size_t size, gfp_t mask); | ||
90 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
91 | |||
92 | #ifdef CONFIG_DEBUG_FS | ||
93 | extern struct dentry *of_debugfs_root; | ||
94 | #endif | ||
95 | |||
96 | #define arch_align_stack(x) (x) | ||
97 | |||
98 | #endif /* _ASM_MICROBLAZE_SYSTEM_H */ | ||