~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-s390/s390-regs-common.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.