1 /*
2 * include/asm-s390/s390-regs-common.h
3 *
4 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
6 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
7 *
8 * this file is designed to keep as much compatibility between
9 * gdb's representation of registers & the kernels representation of registers
10 * as possible so as to minimise translation between gdb registers &
11 * kernel registers please keep this matched with gdb & strace
12 */
13
14 #ifndef _S390_REGS_COMMON_H
15 #define _S390_REGS_COMMON_H
16 #ifndef __ASSEMBLY__
17 #include <asm/types.h>
18 #endif
19
20 #define REGISTER_SIZE 4
21 #define NUM_GPRS 16
22 #define GPR_SIZE 4
23 #define PSW_MASK_SIZE 4
24 #define PSW_ADDR_SIZE 4
25 #define NUM_FPRS 16
26 #define FPR_SIZE 8
27 #define FPC_SIZE 4
28 #define FPC_PAD_SIZE 4 /* gcc insists on aligning the fpregs */
29 #define NUM_CRS 16
30 #define CR_SIZE 4
31 #define NUM_ACRS 16
32 #define ACR_SIZE 4
33
34 #define STACK_FRAME_OVERHEAD 96 /* size of minimum stack frame */
35
36 #ifndef __ASSEMBLY__
37 /* this typedef defines how a Program Status Word looks like */
38 typedef struct
39 {
40 __u32 mask;
41 __u32 addr;
42 } psw_t __attribute__ ((aligned(8)));
43
44 typedef __u32 gpr_t;
45
46 /* 2 __u32's are used for floats instead to compile with a __STRICT_ANSI__ defined */
47 typedef union
48 {
49 #ifdef __KERNEL__
50 __u64 d; /* mathemu.h gets upset otherwise */
51 #else
52 double d; /* ansi c dosen't like long longs & make sure that */
53 /* alignments are identical for both compiles */
54 #endif
55 struct
56 {
57 __u32 hi;
58 __u32 lo;
59 } fp;
60 __u32 f;
61 } freg_t;
62
63 typedef struct
64 {
65 /*
66 The compiler appears to like aligning freg_t on an 8 byte boundary
67 so I always access fpregs, this was causing fun when I was doing
68 coersions.
69 */
70 __u32 fpc;
71 freg_t fprs[NUM_FPRS];
72 } s390_fp_regs;
73
74 /*
75 gdb structures & the kernel have this much always in common
76 */
77 #define S390_REGS_COMMON \
78 psw_t psw; \
79 __u32 gprs[NUM_GPRS]; \
80 __u32 acrs[NUM_ACRS]; \
81
82 typedef struct
83 {
84 S390_REGS_COMMON
85 } s390_regs_common;
86
87
88 /* Sequence of bytes for breakpoint illegal instruction. */
89 #define S390_BREAKPOINT {0x0,0x1}
90 #define S390_BREAKPOINT_U16 ((__u16)0x0001)
91 #define S390_SYSCALL_OPCODE ((__u16)0x0a00)
92 #define S390_SYSCALL_SIZE 2
93 #define ADDR_BITS_REMOVE(addr) ((addr)&0x7fffffff)
94 #endif
95 #endif
96
97
98
99
100
101
102
103
104
105
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.