Go to the documentation of this file.
7 #ifndef __ASM_M68K_PROCESSOR_H
8 #define __ASM_M68K_PROCESSOR_H
14 #define current_text_addr() ({ __label__ _l; _l: &&_l;})
17 #include <asm/segment.h>
19 #include <asm/ptrace.h>
21 static inline unsigned long rdusp(
void)
23 #ifdef CONFIG_COLDFIRE_SW_A7
24 extern unsigned int sw_usp;
27 register unsigned long usp
__asm__(
"a0");
29 __asm__ __volatile__(
".word 0x4e68" :
"=a" (usp));
34 static inline void wrusp(
unsigned long usp)
36 #ifdef CONFIG_COLDFIRE_SW_A7
37 extern unsigned int sw_usp;
40 register unsigned long a0 __asm__(
"a0") = usp;
42 __asm__ __volatile__(
".word 0x4e60" : :
"a" (
a0) );
51 #if defined(CONFIG_COLDFIRE)
52 #define TASK_SIZE (0xC0000000UL)
53 #elif defined(CONFIG_SUN3)
54 #define TASK_SIZE (0x0E000000UL)
56 #define TASK_SIZE (0xF0000000UL)
59 #define TASK_SIZE (0xFFFFFFFFUL)
63 #define STACK_TOP TASK_SIZE
64 #define STACK_TOP_MAX STACK_TOP
71 #if defined(CONFIG_COLDFIRE)
72 #define TASK_UNMAPPED_BASE 0x60000000UL
73 #elif defined(CONFIG_SUN3)
74 #define TASK_UNMAPPED_BASE 0x0A000000UL
76 #define TASK_UNMAPPED_BASE 0xC0000000UL
78 #define TASK_UNMAPPED_ALIGN(addr, off) PAGE_ALIGN(addr)
80 #define TASK_UNMAPPED_BASE 0
92 unsigned long fp[8*3];
97 #define INIT_THREAD { \
98 .ksp = sizeof(init_stack) + (unsigned long) init_stack, \
107 #ifdef CONFIG_COLDFIRE
108 #define setframeformat(_regs) do { (_regs)->format = 0x4; } while(0)
110 #define setframeformat(_regs) do { } while (0)
126 extern int handle_kernel_fault(
struct pt_regs *
regs);
130 #define start_thread(_regs, _pc, _usp) \
132 (_regs)->pc = (_pc); \
133 ((struct switch_stack *)(_regs))[-1].a6 = 0; \
134 setframeformat(_regs); \
136 (_regs)->d5 = current->mm->start_data; \
137 (_regs)->sr &= ~0x2000; \
141 static inline int handle_kernel_fault(
struct pt_regs *
regs)
168 #define KSTK_EIP(tsk) \
170 unsigned long eip = 0; \
171 if ((tsk)->thread.esp0 > PAGE_SIZE && \
172 (virt_addr_valid((tsk)->thread.esp0))) \
173 eip = ((struct pt_regs *) (tsk)->thread.esp0)->pc; \
175 #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp)
177 #define task_pt_regs(tsk) ((struct pt_regs *) ((tsk)->thread.esp0))
179 #define cpu_relax() barrier()