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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-m68k/] [entry.h] - Blame information for rev 1774

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

Line No. Rev Author Line
1 1276 phoenix
#ifndef __M68K_ENTRY_H
2
#define __M68K_ENTRY_H
3
 
4
#include <linux/config.h>
5
#include <asm/setup.h>
6
#include <asm/page.h>
7
 
8
/*
9
 * Stack layout in 'ret_from_exception':
10
 *
11
 *      This allows access to the syscall arguments in registers d1-d5
12
 *
13
 *       0(sp) - d1
14
 *       4(sp) - d2
15
 *       8(sp) - d3
16
 *       C(sp) - d4
17
 *      10(sp) - d5
18
 *      14(sp) - a0
19
 *      18(sp) - a1
20
 *      1C(sp) - a2
21
 *      20(sp) - d0
22
 *      24(sp) - orig_d0
23
 *      28(sp) - stack adjustment
24
 *      2C(sp) - sr
25
 *      2E(sp) - pc
26
 *      32(sp) - format & vector
27
 */
28
 
29
/*
30
 * 97/05/14 Andreas: Register %a2 is now set to the current task throughout
31
 *                   the whole kernel.
32
 */
33
 
34
/* the following macro is used when enabling interrupts */
35
#if defined(MACH_ATARI_ONLY) && !defined(CONFIG_HADES)
36
        /* block out HSYNC on the atari */
37
#define ALLOWINT 0xfbff
38
#define MAX_NOINT_IPL   3
39
#else
40
        /* portable version */
41
#define ALLOWINT 0xf8ff
42
#define MAX_NOINT_IPL   0
43
#endif /* machine compilation types */ 
44
 
45
#ifdef __ASSEMBLY__
46
 
47
#define curptr a2
48
 
49
LFLUSH_I_AND_D = 0x00000808
50
LSIGTRAP = 5
51
 
52
/* process bits for task_struct.ptrace */
53
PT_TRACESYS_OFF = 3
54
PT_TRACESYS_BIT = 1
55
PT_PTRACED_OFF = 3
56
PT_PTRACED_BIT = 0
57
PT_DTRACE_OFF = 3
58
PT_DTRACE_BIT = 2
59
 
60
#define SAVE_ALL_INT save_all_int
61
#define SAVE_ALL_SYS save_all_sys
62
#define RESTORE_ALL restore_all
63
/*
64
 * This defines the normal kernel pt-regs layout.
65
 *
66
 * regs a3-a6 and d6-d7 are preserved by C code
67
 * the kernel doesn't mess with usp unless it needs to
68
 */
69
 
70
/*
71
 * a -1 in the orig_d0 field signifies
72
 * that the stack frame is NOT for syscall
73
 */
74
.macro  save_all_int
75
        clrl    %sp@-           | stk_adj
76
        pea     -1:w            | orig d0
77
        movel   %d0,%sp@-       | d0
78
        moveml  %d1-%d5/%a0-%a1/%curptr,%sp@-
79
.endm
80
 
81
.macro  save_all_sys
82
        clrl    %sp@-           | stk_adj
83
        movel   %d0,%sp@-       | orig d0
84
        movel   %d0,%sp@-       | d0
85
        moveml  %d1-%d5/%a0-%a1/%curptr,%sp@-
86
.endm
87
 
88
.macro  restore_all
89
        moveml  %sp@+,%a0-%a1/%curptr/%d1-%d5
90
        movel   %sp@+,%d0
91
        addql   #4,%sp          | orig d0
92
        addl    %sp@+,%sp       | stk adj
93
        rte
94
.endm
95
 
96
#define SWITCH_STACK_SIZE (6*4+4)       /* includes return address */
97
 
98
#define SAVE_SWITCH_STACK save_switch_stack
99
#define RESTORE_SWITCH_STACK restore_switch_stack
100
#define GET_CURRENT(tmp) get_current tmp
101
 
102
.macro  save_switch_stack
103
        moveml  %a3-%a6/%d6-%d7,%sp@-
104
.endm
105
 
106
.macro  restore_switch_stack
107
        moveml  %sp@+,%a3-%a6/%d6-%d7
108
.endm
109
 
110
.macro  get_current reg=%d0
111
        movel   %sp,\reg
112
        andw    #-KTHREAD_SIZE,\reg
113
        movel   \reg,%curptr
114
.endm
115
 
116
#else /* C source */
117
 
118
#define STR(X) STR1(X)
119
#define STR1(X) #X
120
 
121
#define PT_OFF_ORIG_D0   0x24
122
#define PT_OFF_FORMATVEC 0x32
123
#define PT_OFF_SR        0x2C
124
#define SAVE_ALL_INT                            \
125
        "clrl   %%sp@-;"    /* stk_adj */       \
126
        "pea    -1:w;"      /* orig d0 = -1 */  \
127
        "movel  %%d0,%%sp@-;" /* d0 */          \
128
        "moveml %%d1-%%d5/%%a0-%%a2,%%sp@-"
129
#define GET_CURRENT(tmp) \
130
        "movel  %%sp,"#tmp"\n\t" \
131
        "andw   #-"STR(KTHREAD_SIZE)","#tmp"\n\t" \
132
        "movel  "#tmp",%%a2"
133
 
134
#endif
135
 
136
#endif /* __M68K_ENTRY_H */

powered by: WebSVN 2.1.0

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