source: trunk/ccl/lisp-kernel/sigcontext.h @ 6

Last change on this file since 6 was 6, checked in by gb, 16 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1#ifndef _ASM_PPC_SIGCONTEXT_H
2#define _ASM_PPC_SIGCONTEXT_H
3
4/*
5 * This struct defines the way the registers are stored on the
6 * kernel stack during a system call or other kernel entry.
7 *
8 * this should only contain volatile regs
9 * since we can keep non-volatile in the tss
10 * should set this up when only volatiles are saved
11 * by intr code.
12 *
13 * Since this is going on the stack, *CARE MUST BE TAKEN* to insure
14 * that the overall structure is a multiple of 16 bytes in length.
15 *
16 * Note that the offsets of the fields in this struct correspond with
17 * the PT_* values below.  This simplifies arch/ppc/kernel/ptrace.c.
18 */
19
20#ifndef __ASSEMBLY__
21struct pt_regs {
22        unsigned long gpr[32];
23        unsigned long nip;
24        unsigned long msr;
25        unsigned long orig_gpr3; /* Used for restarting system calls */
26        unsigned long ctr;
27        unsigned long link;
28        unsigned long xer;
29        unsigned long ccr;
30        unsigned long mq;       /* 601 only (not used at present) */
31                                /* Used on APUS to hold IPL value. */
32        unsigned long trap;     /* Reason for being here */
33        unsigned long dar;      /* Fault registers */
34        unsigned long dsisr;
35        unsigned long result;   /* Result of a system call */
36};
37#endif
38
39#define STACK_FRAME_OVERHEAD    16      /* size of minimum stack frame */
40
41/* Size of stack frame allocated when calling signal handler. */
42#define __SIGNAL_FRAMESIZE      64
43
44#define instruction_pointer(regs) ((regs)->nip)
45#define user_mode(regs) ((regs)->msr & 0x4000)
46
47/*
48 * Offsets used by 'ptrace' system call interface.
49 * These can't be changed without breaking binary compatibility
50 * with MkLinux, etc.
51 */
52#define PT_R0   0
53#define PT_R1   1
54#define PT_R2   2
55#define PT_R3   3
56#define PT_R4   4
57#define PT_R5   5
58#define PT_R6   6
59#define PT_R7   7
60#define PT_R8   8
61#define PT_R9   9
62#define PT_R10  10
63#define PT_R11  11
64#define PT_R12  12
65#define PT_R13  13
66#define PT_R14  14
67#define PT_R15  15
68#define PT_R16  16
69#define PT_R17  17
70#define PT_R18  18
71#define PT_R19  19
72#define PT_R20  20
73#define PT_R21  21
74#define PT_R22  22
75#define PT_R23  23
76#define PT_R24  24
77#define PT_R25  25
78#define PT_R26  26
79#define PT_R27  27
80#define PT_R28  28
81#define PT_R29  29
82#define PT_R30  30
83#define PT_R31  31
84
85#define PT_NIP  32
86#define PT_MSR  33
87#ifdef __KERNEL__
88#define PT_ORIG_R3 34
89#endif
90#define PT_CTR  35
91#define PT_LNK  36
92#define PT_XER  37
93#define PT_CCR  38
94#define PT_MQ   39
95
96#define PT_FPR0 48      /* each FP reg occupies 2 slots in this space */
97#define PT_FPR31 (PT_FPR0 + 2*31)
98#define PT_FPSCR (PT_FPR0 + 2*32 + 1)
99
100
101
102struct linux_sigcontext_struct {
103        unsigned long   _unused[4];
104        int             signal;
105        unsigned long   handler;
106        unsigned long   oldmask;
107        struct pt_regs  *regs;
108};
109
110#endif
Note: See TracBrowser for help on using the repository browser.