gdb/gdbserver/lynx-ppc-low.c - gdb
 Global variables defined
 
 Data types defined
 
 Functions defined
 
 Macros defined
 
 Source code
  
 
 
 
 
 
- #include "server.h"
 
- #include "lynx-low.h"
 
 
- #include <stdint.h>
 
- #include <limits.h>
 
- #include <sys/ptrace.h>
 
 
 
- typedef struct usr_econtext_s
 
- {
 
-         uint32_t        uec_iregs[32];
 
-         uint32_t        uec_inum;
 
-         uint32_t        uec_srr0;
 
-         uint32_t        uec_srr1;
 
-         uint32_t        uec_lr;
 
-         uint32_t        uec_ctr;
 
-         uint32_t        uec_cr;
 
-         uint32_t        uec_xer;
 
-         uint32_t        uec_dar;
 
-         uint32_t        uec_mq;
 
-         uint32_t        uec_msr;
 
-         uint32_t        uec_sregs[16];
 
-         uint32_t        uec_ss_count;
 
-         uint32_t        uec_ss_addr1;
 
-         uint32_t        uec_ss_addr2;
 
-         uint32_t        uec_ss_code1;
 
-         uint32_t        uec_ss_code2;
 
- } usr_econtext_t;
 
 
- typedef struct usr_fcontext_s
 
- {
 
-         uint64_t        ufc_freg[32];
 
-         uint32_t        ufc_fpscr[2];
 
- } usr_fcontext_t;
 
 
- #define R0_REGNUM    0
 
- #define F0_REGNUM    32
 
- #define PC_REGNUM    64
 
- #define MSR_REGNUM   65
 
- #define CR_REGNUM    66
 
- #define LR_REGNUM    67
 
- #define CTR_REGNUM   68
 
- #define XER_REGNUM   69
 
- #define FPSCR_REGNUM 70
 
 
- extern void init_registers_powerpc_32 (void);
 
- extern const struct target_desc *tdesc_powerpc_32;
 
 
 
- static void
 
- lynx_ppc_fill_gregset (struct regcache *regcache, char *buf)
 
- {
 
-   int i;
 
 
-   
 
-   for (i = 0; i < 32; i++)
 
-     collect_register (regcache, R0_REGNUM + i,
 
-                       buf + offsetof (usr_econtext_t, uec_iregs[i]));
 
 
-   
 
-   collect_register (regcache, PC_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_srr0));
 
-   collect_register (regcache, MSR_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_srr1));
 
-   collect_register (regcache, CR_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_cr));
 
-   collect_register (regcache, LR_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_lr));
 
-   collect_register (regcache, CTR_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_ctr));
 
-   collect_register (regcache, XER_REGNUM,
 
-                     buf + offsetof (usr_econtext_t, uec_xer));
 
- }
 
 
 
- static void
 
- lynx_ppc_store_gregset (struct regcache *regcache, const char *buf)
 
- {
 
-   int i;
 
 
-   
 
-   for (i = 0; i < 32; i++)
 
-     supply_register (regcache, R0_REGNUM + i,
 
-                       buf + offsetof (usr_econtext_t, uec_iregs[i]));
 
 
-   
 
-   supply_register (regcache, PC_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_srr0));
 
-   supply_register (regcache, MSR_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_srr1));
 
-   supply_register (regcache, CR_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_cr));
 
-   supply_register (regcache, LR_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_lr));
 
-   supply_register (regcache, CTR_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_ctr));
 
-   supply_register (regcache, XER_REGNUM,
 
-                    buf + offsetof (usr_econtext_t, uec_xer));
 
- }
 
 
 
- static void
 
- lynx_ppc_fill_fpregset (struct regcache *regcache, char *buf)
 
- {
 
-   int i;
 
 
-   
 
-   for (i = 0; i < 32; i++)
 
-     collect_register (regcache, F0_REGNUM + i,
 
-                       buf + offsetof (usr_fcontext_t, ufc_freg[i]));
 
 
-   
 
-   collect_register (regcache, FPSCR_REGNUM,
 
-                     buf + offsetof (usr_fcontext_t, ufc_fpscr));
 
- }
 
 
 
- static void
 
- lynx_ppc_store_fpregset (struct regcache *regcache, const char *buf)
 
- {
 
-   int i;
 
 
-   
 
-   for (i = 0; i < 32; i++)
 
-     supply_register (regcache, F0_REGNUM + i,
 
-                      buf + offsetof (usr_fcontext_t, ufc_freg[i]));
 
 
-   
 
-   supply_register (regcache, FPSCR_REGNUM,
 
-                    buf + offsetof (usr_fcontext_t, ufc_fpscr));
 
- }
 
 
 
- static void
 
- lynx_ppc_arch_setup (void)
 
- {
 
-   init_registers_powerpc_32 ();
 
-   lynx_tdesc = tdesc_powerpc_32;
 
- }
 
 
 
- struct lynx_regset_info lynx_target_regsets[] = {
 
-   
 
-   {PTRACE_GETREGS, PTRACE_SETREGS, sizeof(usr_econtext_t),
 
-    lynx_ppc_fill_gregset, lynx_ppc_store_gregset},
 
-   
 
-   { PTRACE_GETFPREGS, PTRACE_SETFPREGS, sizeof(usr_fcontext_t),
 
-     lynx_ppc_fill_fpregset, lynx_ppc_store_fpregset },
 
-   
 
-   {0, 0, -1, NULL, NULL }
 
- };
 
 
 
- struct lynx_target_ops the_low_target = {
 
-   lynx_ppc_arch_setup,
 
- };