diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/librdbg/src/m68k/any/remdeb.h | 509 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/any/remdeb_f.x | 70 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/any/remdeb_svc.c | 120 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/any/remdeb_xdr.c | 890 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/excep_f.c | 217 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/rdbg_cpu_asm.S | 244 | ||||
-rw-r--r-- | c/src/librdbg/src/m68k/rdbg_f.c | 178 |
7 files changed, 0 insertions, 2228 deletions
diff --git a/c/src/librdbg/src/m68k/any/remdeb.h b/c/src/librdbg/src/m68k/any/remdeb.h deleted file mode 100644 index 63e70e0ef4..0000000000 --- a/c/src/librdbg/src/m68k/any/remdeb.h +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#ifndef _REMDEB_H_RPCGEN -#define _REMDEB_H_RPCGEN - -#include <rpc/rpc.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -#define RTEMS_PORT 2071 -#define RTEMS_BACK_PORT 2073 -#ifndef REMDEB_H -#define RPCGENSRVNAME(a) a - -enum rpc_type { - SUNRPC = 0, - BADRPCTYPE = 25, -}; -typedef enum rpc_type rpc_type; -#define NET_SAFE 1400 - -struct UDP_MSG { - u_char type; - u_char msg_num; - u_short spec; - long pid; - u_long context; -}; -typedef struct UDP_MSG UDP_MSG; -/* - * Sun request values for the remote ptrace system call - */ - - -enum ptracereq { - RPT_TRACEME = 0, - RPT_CHILDDONE = 0, - RPT_PEEKTEXT = 0 + 1, - RPT_PEEKDATA = 0 + 2, - RPT_PEEKUSER = 0 + 3, - RPT_POKETEXT = 0 + 4, - RPT_POKEDATA = 0 + 5, - RPT_POKEUSER = 0 + 6, - RPT_CONT = 0 + 7, - RPT_KILL = 0 + 8, - RPT_SINGLESTEP = 0 + 9, - RPT_ATTACH = 0 + 10, - RPT_DETACH = 0 + 11, - RPT_GETREGS = 0 + 12, - RPT_SETREGS = 0 + 13, - RPT_GETFPREGS = 0 + 14, - RPT_SETFPREGS = 0 + 15, - RPT_READDATA = 0 + 16, - RPT_WRITEDATA = 0 + 17, - RPT_READTEXT = 0 + 18, - RPT_WRITETEXT = 0 + 19, - RPT_GETFPAREGS = 0 + 20, - RPT_SETFPAREGS = 0 + 21, - RPT_22 = 0 + 22, - RPT_23 = 0 + 23, - RPT_SYSCALL = 0 + 24, - RPT_DUMPCORE = 0 + 25, - RPT_26 = 0 + 26, - RPT_27 = 0 + 27, - RPT_28 = 0 + 28, - RPT_GETUCODE = 0 + 29, - RPT_GETTARGETTHREAD = 50, - RPT_SETTARGETTHREAD = 51, - RPT_THREADSUSPEND = 52, - RPT_THREADRESUME = 53, - RPT_THREADLIST = 54, - RPT_GETTHREADNAME = 55, - RPT_SETTHREADNAME = 56, - RPT_SETTHREADREGS = 57, - RPT_GETTHREADREGS = 58, - RPT_STEPRANGE = 75, - RPT_CONTTO = 76, - RPT_SETBREAK = 77, - RPT_CLRBREAK = 78, - RPT_GETBREAK = 79, - RPT_GETNAME = 80, - RPT_STOP = 81, - RPT_PGETREGS = 82, - RPT_PSETREGS = 83, - RPT_PSETTHREADREGS = 84, - RPT_PGETTHREADREGS = 85, -}; -typedef enum ptracereq ptracereq; - -struct xdr_regs { - int r_dreg[8]; - int r_areg[8]; - int r_sr; - int r_pc; - int r_vec; -}; -typedef struct xdr_regs xdr_regs; -/* now define register macros to apply to xdr_reg struct */ - -#define r_r0 r_dreg[0] /* r0 for portability */ -#define r_sp r_areg[7] /* user stack pointer */ -#define r_ps r_sr -#define REG_PC r_pc /* PC register offset */ -#define REG_SP r_areg[7] /* SP register offset */ -#define REG_FP r_areg[6] /* FP register offset */ -/* now define the BREAKPOINT mask technique to a long word */ -#define SET_BREAK(l) ((l&0x0000FFFF) | 0x4E4F0000) /* TRAP 15 */ -#define IS_BREAK(l) (((l) & 0xFFFF0000) == 0x4E4F0000) -#define ORG_BREAK(c,p) (((c) & 0x0000FFFF) | ((p) & 0xFFFF0000)) -#define IS_STEP(regs) ((regs).r_vec == 9) -#define BREAK_ADJ 0 -#define BREAK_SIZE 2 -#define TARGET_PROC_TYPE 2 -#define MAXDEBUGGEE 150 -#define NAMEMAX 17 - /* - * Memory data for read/write text or data. The size is in data. The target - * addr is in the addr field. - * Be careful before modifying because this value goes into internal - * pipes and is allocated on stack too. Pipes and/or the stack could - * become too small if this value gets incremented. - */ -#define MEM_DATA_MAX 256 - -struct xdr_mem { - u_long addr; - u_int dataNb; - u_char data[MEM_DATA_MAX]; -}; -typedef struct xdr_mem xdr_mem; - -enum break_type { - BRKT_NONE = 0, - BRKT_INSTR = 1, - BRKT_READ = 2, - BRKT_WRITE = 3, - BRKT_ACCESS = 4, - BRKT_EXEC = 5, - BRKT_OS_CALL = 6, - BRKT_OS_SWITCH = 7, - BRKT_STEPEMUL = 8, -}; -typedef enum break_type break_type; -#define MAX_THRD_BRK 4 - -struct xdr_break { - u_char type; - u_char thread_spec; - u_short handle; - u_long ee_loc; - u_long ee_type; - u_short length; - u_char pass_count; - u_char curr_pass; - u_long thread_list[MAX_THRD_BRK]; -}; -typedef struct xdr_break xdr_break; -#define UTHREAD_MAX 64 -#define THREADNAMEMAX 16 - -typedef char *thread_name; - -struct KernThread { - u_int threadLi; -}; -typedef struct KernThread KernThread; -typedef KernThread *ptThreadList; - -struct thread_list { - u_int nbThread; - ptThreadList threads; -}; -typedef struct thread_list thread_list; - -struct ptrace_addr_data_in { - ptracereq req; - union { - xdr_regs regs; - struct { - u_int pregs_len; - u_int *pregs_val; - } pregs; - thread_name name; - xdr_mem mem; - xdr_break breakp; - u_int address; - } ptrace_addr_data_in_u; -}; -typedef struct ptrace_addr_data_in ptrace_addr_data_in; - -struct ptrace_addr_data_out { - ptracereq req; - union { - xdr_regs regs; - struct { - u_int pregs_len; - u_int *pregs_val; - } pregs; - thread_list threads; - thread_name name; - xdr_mem mem; - xdr_break breakp; - u_int addr; - } ptrace_addr_data_out_u; -}; -typedef struct ptrace_addr_data_out ptrace_addr_data_out; - -typedef struct { - u_int CHAR_DATA_len; - char *CHAR_DATA_val; -} CHAR_DATA; - -typedef char *one_arg; - /* now open_connex() routine which establishes a connection to server */ - -enum debug_type { - DEBTYP_PROCESS = 0, - DEBTYP_C_ACTOR = 1, - DEBTYP_KERNEL = 2, - DEBTYP_OTHER = 3, -}; -typedef enum debug_type debug_type; -#define DEBUGGER_IS_GDB 0x2 /* */ - -struct open_in { - u_char back_port[16]; - u_short debug_type; - u_short flags; - u_char destination[16]; - one_arg user_name; -}; -typedef struct open_in open_in; - -struct open_out { - u_long port; - u_int pad[4]; - u_int fp; - u_char cmd_table_num; - u_char cmd_table_vers; - u_short server_vers; -}; -typedef struct open_out open_out; - /* now close_connex() routine which detaches from server */ - -enum close_control { - CLOSE_IGNORE = 0, - CLOSE_KILL = 1, - CLOSE_DETACH = 2, -}; -typedef enum close_control close_control; - -struct close_in { - close_control control; -}; -typedef struct close_in close_in; - /* now send_signal() routine which sends signals to processes like kill(2) */ - -struct signal_in { - int pid; - int sig; -}; -typedef struct signal_in signal_in; - -struct signal_out { - int kill_return; - int errNo; -}; -typedef struct signal_out signal_out; - /* now wait_info() routine which returns results of polling the wait status - of a process/actor. It may return 0 if running, else pid or -1 */ - -enum stop_code { - STOP_ERROR = 0, - STOP_NONE = 1, - STOP_UNKNOWN = 2, - STOP_BREAK = 3, - STOP_STEP = 4, - STOP_SIGNAL = 5, - STOP_TERM_EXIT = 6, - STOP_TERM_SIG = 7, - STOP_DETACHED = 8, - STOP_KILLED = 9, - STOP_SPAWN_FAILED = 10, -}; -typedef enum stop_code stop_code; - -struct wait_in { - int pid; -}; -typedef struct wait_in wait_in; - -struct wait_out { - int wait_return; - int errNo; - int status; - stop_code reason; - int handle; - u_long PC; - u_long SP; - u_long FP; - u_long thread; -}; -typedef struct wait_out wait_out; - /* now ptrace() routine. This matches the Sun UNIX ptrace as well as - some additions */ -#define PTRFLG_FORCE 1 -#define PTRFLG_NON_OWNER 2 -#define PTRFLG_FREE 4 -#define PTRDET_UNOWN 0x100 - -struct ptrace_in { - int pid; - ptrace_addr_data_in addr; - u_int data; - u_int flags; -}; -typedef struct ptrace_in ptrace_in; - -struct ptrace_out { - ptrace_addr_data_out addr; - int result; - int errNo; -}; -typedef struct ptrace_out ptrace_out; - -struct one_symbol { - char *symbolName; - long symbolValue; -}; -typedef struct one_symbol one_symbol; - -typedef struct { - u_int all_symbols_len; - one_symbol *all_symbols_val; -} all_symbols; - -struct get_global_symbols_out { - all_symbols symbols; -}; -typedef struct get_global_symbols_out get_global_symbols_out; - -struct get_text_data_in { - int pid; - char *actorName; -}; -typedef struct get_text_data_in get_text_data_in; - -struct get_text_data_out { - int result; - int errNo; - u_long textStart; - u_long textSize; - u_long dataStart; - u_long dataSize; -}; -typedef struct get_text_data_out get_text_data_out; - -struct one_signal { - u_int number; - char *name; -}; -typedef struct one_signal one_signal; - -typedef struct { - u_int all_signals_len; - one_signal *all_signals_val; -} all_signals; - -struct get_signal_names_out { - all_signals signals; -}; -typedef struct get_signal_names_out get_signal_names_out; - /* now define the actual calls we support */ -#define REMDEB_H -#endif - -#define REMOTEDEB 0x20000fff -#define REMOTEVERS 2 - -#if defined(__STDC__) || defined(__cplusplus) -#define OPEN_CONNEX 1 -extern open_out * open_connex_2(open_in *, CLIENT *); -extern open_out * open_connex_2_svc(open_in *, struct svc_req *); -#define SEND_SIGNAL 2 -extern signal_out * send_signal_2(signal_in *, CLIENT *); -extern signal_out * send_signal_2_svc(signal_in *, struct svc_req *); -#define CLOSE_CONNEX 10 -extern void * close_connex_2(close_in *, CLIENT *); -extern void * close_connex_2_svc(close_in *, struct svc_req *); -#define PTRACE 11 -extern ptrace_out * ptrace_2(ptrace_in *, CLIENT *); -extern ptrace_out * ptrace_2_svc(ptrace_in *, struct svc_req *); -#define WAIT_INFO 13 -extern wait_out * wait_info_2(wait_in *, CLIENT *); -extern wait_out * wait_info_2_svc(wait_in *, struct svc_req *); -#define GET_SIGNAL_NAMES 17 -extern get_signal_names_out * get_signal_names_2(void *, CLIENT *); -extern get_signal_names_out * get_signal_names_2_svc(void *, struct svc_req *); -extern int remotedeb_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -#define OPEN_CONNEX 1 -extern open_out * open_connex_2(); -extern open_out * open_connex_2_svc(); -#define SEND_SIGNAL 2 -extern signal_out * send_signal_2(); -extern signal_out * send_signal_2_svc(); -#define CLOSE_CONNEX 10 -extern void * close_connex_2(); -extern void * close_connex_2_svc(); -#define PTRACE 11 -extern ptrace_out * ptrace_2(); -extern ptrace_out * ptrace_2_svc(); -#define WAIT_INFO 13 -extern wait_out * wait_info_2(); -extern wait_out * wait_info_2_svc(); -#define GET_SIGNAL_NAMES 17 -extern get_signal_names_out * get_signal_names_2(); -extern get_signal_names_out * get_signal_names_2_svc(); -extern int remotedeb_2_freeresult (); -#endif /* K&R C */ - -/* the xdr functions */ - -#if defined(__STDC__) || defined(__cplusplus) -extern bool_t xdr_rpc_type (XDR *, rpc_type*); -extern bool_t xdr_UDP_MSG (XDR *, UDP_MSG*); -extern bool_t xdr_ptracereq (XDR *, ptracereq*); -extern bool_t xdr_xdr_regs (XDR *, xdr_regs*); -extern bool_t xdr_xdr_mem (XDR *, xdr_mem*); -extern bool_t xdr_break_type (XDR *, break_type*); -extern bool_t xdr_xdr_break (XDR *, xdr_break*); -extern bool_t xdr_thread_name (XDR *, thread_name*); -extern bool_t xdr_KernThread (XDR *, KernThread*); -extern bool_t xdr_thread_list (XDR *, thread_list*); -extern bool_t xdr_ptrace_addr_data_in (XDR *, ptrace_addr_data_in*); -extern bool_t xdr_ptrace_addr_data_out (XDR *, ptrace_addr_data_out*); -extern bool_t xdr_CHAR_DATA (XDR *, CHAR_DATA*); -extern bool_t xdr_one_arg (XDR *, one_arg*); -extern bool_t xdr_debug_type (XDR *, debug_type*); -extern bool_t xdr_open_in (XDR *, open_in*); -extern bool_t xdr_open_out (XDR *, open_out*); -extern bool_t xdr_close_control (XDR *, close_control*); -extern bool_t xdr_close_in (XDR *, close_in*); -extern bool_t xdr_signal_in (XDR *, signal_in*); -extern bool_t xdr_signal_out (XDR *, signal_out*); -extern bool_t xdr_stop_code (XDR *, stop_code*); -extern bool_t xdr_wait_in (XDR *, wait_in*); -extern bool_t xdr_wait_out (XDR *, wait_out*); -extern bool_t xdr_ptrace_in (XDR *, ptrace_in*); -extern bool_t xdr_ptrace_out (XDR *, ptrace_out*); -extern bool_t xdr_one_symbol (XDR *, one_symbol*); -extern bool_t xdr_all_symbols (XDR *, all_symbols*); -extern bool_t xdr_get_global_symbols_out (XDR *, get_global_symbols_out*); -extern bool_t xdr_get_text_data_in (XDR *, get_text_data_in*); -extern bool_t xdr_get_text_data_out (XDR *, get_text_data_out*); -extern bool_t xdr_one_signal (XDR *, one_signal*); -extern bool_t xdr_all_signals (XDR *, all_signals*); -extern bool_t xdr_get_signal_names_out (XDR *, get_signal_names_out*); - -#else /* K&R C */ -extern bool_t xdr_rpc_type (); -extern bool_t xdr_UDP_MSG (); -extern bool_t xdr_ptracereq (); -extern bool_t xdr_xdr_regs (); -extern bool_t xdr_xdr_mem (); -extern bool_t xdr_break_type (); -extern bool_t xdr_xdr_break (); -extern bool_t xdr_thread_name (); -extern bool_t xdr_KernThread (); -extern bool_t xdr_thread_list (); -extern bool_t xdr_ptrace_addr_data_in (); -extern bool_t xdr_ptrace_addr_data_out (); -extern bool_t xdr_CHAR_DATA (); -extern bool_t xdr_one_arg (); -extern bool_t xdr_debug_type (); -extern bool_t xdr_open_in (); -extern bool_t xdr_open_out (); -extern bool_t xdr_close_control (); -extern bool_t xdr_close_in (); -extern bool_t xdr_signal_in (); -extern bool_t xdr_signal_out (); -extern bool_t xdr_stop_code (); -extern bool_t xdr_wait_in (); -extern bool_t xdr_wait_out (); -extern bool_t xdr_ptrace_in (); -extern bool_t xdr_ptrace_out (); -extern bool_t xdr_one_symbol (); -extern bool_t xdr_all_symbols (); -extern bool_t xdr_get_global_symbols_out (); -extern bool_t xdr_get_text_data_in (); -extern bool_t xdr_get_text_data_out (); -extern bool_t xdr_one_signal (); -extern bool_t xdr_all_signals (); -extern bool_t xdr_get_signal_names_out (); - -#endif /* K&R C */ - -#ifdef __cplusplus -} -#endif - -#endif /* !_REMDEB_H_RPCGEN */ diff --git a/c/src/librdbg/src/m68k/any/remdeb_f.x b/c/src/librdbg/src/m68k/any/remdeb_f.x deleted file mode 100644 index a6c47327b1..0000000000 --- a/c/src/librdbg/src/m68k/any/remdeb_f.x +++ /dev/null @@ -1,70 +0,0 @@ -/* - ************************************************************************** - * - * Component = rdblib - * - * Synopsis = remdeb_f.x - * - * - * Copyright(C) 2000 Canon Research Center France SA. - * - * Developped by : - * Eric Valette, mail to : valette@crf.canon.fr - * Emmanuel Raguet, mail to : raguet@crf.canon.fr - * - * $Header$ - * - ************************************************************************** - */ -/* Basic, host-specific, and target-specific definitions for GDB. - Copyright (C) 1986, 1989, 1991, 1992, 1993, 1994, 1995 - Free Software Foundation, Inc. - -This file is part of GDB. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -struct xdr_regs { - int r_dreg[8]; /* data registers */ - int r_areg[8]; /* address registers */ - int r_sr; /* status register (actually a short) */ - int r_pc; /* program counter */ - int r_vec; /* last vector */ -}; - -#ifdef RPC_HDR - -%/* now define register macros to apply to xdr_reg struct */ -% - -%#define r_r0 r_dreg[0] /* r0 for portability */ -%#define r_sp r_areg[7] /* user stack pointer */ -%#define r_ps r_sr - -%#define REG_PC r_pc /* PC register offset */ -%#define REG_SP r_areg[7] /* SP register offset */ -%#define REG_FP r_areg[6] /* FP register offset */ - -%/* now define the BREAKPOINT mask technique to a long word */ -%#define SET_BREAK(l) ((l&0x0000FFFF) | 0x4E4F0000) /* TRAP 15 */ -%#define IS_BREAK(l) (((l) & 0xFFFF0000) == 0x4E4F0000) -%#define ORG_BREAK(c,p) (((c) & 0x0000FFFF) | ((p) & 0xFFFF0000)) -%#define IS_STEP(regs) ((regs).r_vec == 9) -%#define BREAK_ADJ 0 -%#define BREAK_SIZE 2 - -%#define TARGET_PROC_TYPE 2 - -#endif diff --git a/c/src/librdbg/src/m68k/any/remdeb_svc.c b/c/src/librdbg/src/m68k/any/remdeb_svc.c deleted file mode 100644 index c76159ea26..0000000000 --- a/c/src/librdbg/src/m68k/any/remdeb_svc.c +++ /dev/null @@ -1,120 +0,0 @@ -#include <rpc/types.h> -#include <rpc/rpc.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <bsp.h> -#include <rdbg/servrpc.h> -#include <rdbg/remdeb.h> -#define printf(c) -/*HEADER_START*/ -#define RTEMS_PORT 2071 -#define RTEMS_BACK_PORT 2073 -/* - * Sun request values for the remote ptrace system call - */ - - /* - * Memory data for read/write text or data. The size is in data. The target - * addr is in the addr field. - * Be careful before modifying because this value goes into internal - * pipes and is allocated on stack too. Pipes and/or the stack could - * become too small if this value gets incremented. - */ - /* now open_connex() routine which establishes a connection to server */ -#define DEBUGGER_IS_GDB 0x2 /* */ - /* now close_connex() routine which detaches from server */ - /* now send_signal() routine which sends signals to processes like kill(2) */ - /* now wait_info() routine which returns results of polling the wait status - of a process/actor. It may return 0 if running, else pid or -1 */ - /* now ptrace() routine. This matches the Sun UNIX ptrace as well as - some additions */ - /* now define the actual calls we support */ -const char* names [] = { - "NULLPROC", "OPEN_CONNEX", "SEND_SIGNAL", "name3", - "name4", "name5", "name6", "name7", - "name8", "name9", "CLOSE_CONNEX", "PTRACE", - "name12", "WAIT_INFO", "name14", "name15", - "name16", "GET_SIGNAL_NAMES", "name18" -}; - -void -remotedeb_2(struct svc_req *rqstp, register SVCXPRT *transp) -{ - union { - open_in open_connex_2_arg; - signal_in send_signal_2_arg; - close_in close_connex_2_arg; - ptrace_in ptrace_2_arg; - wait_in wait_info_2_arg; - } argument; - char *result; - xdrproc_t _xdr_argument, _xdr_result; - char *(*local)(char *, struct svc_req *); - - DPRINTF (("remotedeb_2: %s (%d)\n", - (unsigned) rqstp->rq_proc < - (unsigned) (sizeof names / sizeof names[0]) ? - names [rqstp->rq_proc] : "???", - (int) rqstp->rq_proc)); - - switch (rqstp->rq_proc) { - case NULLPROC: - (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL); - return; - - case OPEN_CONNEX: - _xdr_argument = (xdrproc_t) xdr_open_in; - _xdr_result = (xdrproc_t) xdr_open_out; - local = (char *(*)(char *, struct svc_req *)) open_connex_2_svc; - break; - - case SEND_SIGNAL: - _xdr_argument = (xdrproc_t) xdr_signal_in; - _xdr_result = (xdrproc_t) xdr_signal_out; - local = (char *(*)(char *, struct svc_req *)) send_signal_2_svc; - break; - - case CLOSE_CONNEX: - _xdr_argument = (xdrproc_t) xdr_close_in; - _xdr_result = (xdrproc_t) xdr_void; - local = (char *(*)(char *, struct svc_req *)) close_connex_2_svc; - break; - - case PTRACE: - _xdr_argument = (xdrproc_t) xdr_ptrace_in; - _xdr_result = (xdrproc_t) xdr_ptrace_out; - local = (char *(*)(char *, struct svc_req *)) ptrace_2_svc; - break; - - case WAIT_INFO: - _xdr_argument = (xdrproc_t) xdr_wait_in; - _xdr_result = (xdrproc_t) xdr_wait_out; - local = (char *(*)(char *, struct svc_req *)) wait_info_2_svc; - break; - - case GET_SIGNAL_NAMES: - _xdr_argument = (xdrproc_t) xdr_void; - _xdr_result = (xdrproc_t) xdr_get_signal_names_out; - local = (char *(*)(char *, struct svc_req *)) get_signal_names_2_svc; - break; - - default: - svcerr_noproc (transp); - return; - } - memset ((char *)&argument, 0, sizeof (argument)); - if (!svc_getargs (transp, _xdr_argument, (caddr_t) &argument)) { - svcerr_decode (transp); - return; - } - result = (*local)((char *)&argument, rqstp); - if (result != NULL && !svc_sendreply(transp, _xdr_result, result)) { - svcerr_systemerr (transp); - } - if (!svc_freeargs (transp, _xdr_argument, (caddr_t) &argument)) { - printf( "unable to free arguments"); - exit (1); - } - return; -} diff --git a/c/src/librdbg/src/m68k/any/remdeb_xdr.c b/c/src/librdbg/src/m68k/any/remdeb_xdr.c deleted file mode 100644 index a74d02f68f..0000000000 --- a/c/src/librdbg/src/m68k/any/remdeb_xdr.c +++ /dev/null @@ -1,890 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#include "src/m68k/any/remdeb.h" -#define RTEMS_PORT 2071 -#define RTEMS_BACK_PORT 2073 - -bool_t -xdr_rpc_type (XDR *xdrs, rpc_type *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_UDP_MSG (XDR *xdrs, UDP_MSG *objp) -{ - - if (!xdr_u_char (xdrs, &objp->type)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->msg_num)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->spec)) - return FALSE; - if (!xdr_long (xdrs, &objp->pid)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->context)) - return FALSE; - return TRUE; -} -/* - * Sun request values for the remote ptrace system call - */ - - -bool_t -xdr_ptracereq (XDR *xdrs, ptracereq *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_xdr_regs (XDR *xdrs, xdr_regs *objp) -{ - register int32_t *buf; - - int i; - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, (3 + 8 + 8 )* BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->r_dreg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->r_areg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_sr)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_pc)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_vec)) - return FALSE; - } else { - { - register int *genp; - - for (i = 0, genp = objp->r_dreg; - i < 8; ++i) { - IXDR_PUT_LONG(buf, *genp++); - } - } - { - register int *genp; - - for (i = 0, genp = objp->r_areg; - i < 8; ++i) { - IXDR_PUT_LONG(buf, *genp++); - } - } - IXDR_PUT_LONG(buf, objp->r_sr); - IXDR_PUT_LONG(buf, objp->r_pc); - IXDR_PUT_LONG(buf, objp->r_vec); - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, (3 + 8 + 8 )* BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->r_dreg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->r_areg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_sr)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_pc)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_vec)) - return FALSE; - } else { - { - register int *genp; - - for (i = 0, genp = objp->r_dreg; - i < 8; ++i) { - *genp++ = IXDR_GET_LONG(buf); - } - } - { - register int *genp; - - for (i = 0, genp = objp->r_areg; - i < 8; ++i) { - *genp++ = IXDR_GET_LONG(buf); - } - } - objp->r_sr = IXDR_GET_LONG(buf); - objp->r_pc = IXDR_GET_LONG(buf); - objp->r_vec = IXDR_GET_LONG(buf); - } - return TRUE; - } - - if (!xdr_vector (xdrs, (char *)objp->r_dreg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->r_areg, 8, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_sr)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_pc)) - return FALSE; - if (!xdr_int (xdrs, &objp->r_vec)) - return FALSE; - return TRUE; -} - /* - * Memory data for read/write text or data. The size is in data. The target - * addr is in the addr field. - * Be careful before modifying because this value goes into internal - * pipes and is allocated on stack too. Pipes and/or the stack could - * become too small if this value gets incremented. - */ -bool_t xdr_xdr_mem(xdrs, objp) - XDR *xdrs; - struct xdr_mem *objp; -{ - if (!xdr_u_long(xdrs, &objp->addr)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->dataNb)) { - return(FALSE); - } - return (xdr_opaque(xdrs, objp->data, objp->dataNb)); -} - -bool_t -xdr_break_type (XDR *xdrs, break_type *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_xdr_break (XDR *xdrs, xdr_break *objp) -{ - register int32_t *buf; - - int i; - - if (xdrs->x_op == XDR_ENCODE) { - if (!xdr_u_char (xdrs, &objp->type)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->thread_spec)) - return FALSE; - buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_u_short (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_loc)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_type)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->length)) - return FALSE; - - } else { - IXDR_PUT_U_SHORT(buf, objp->handle); - IXDR_PUT_U_LONG(buf, objp->ee_loc); - IXDR_PUT_U_LONG(buf, objp->ee_type); - IXDR_PUT_U_SHORT(buf, objp->length); - } - if (!xdr_u_char (xdrs, &objp->pass_count)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->curr_pass)) - return FALSE; - buf = XDR_INLINE (xdrs, ( MAX_THRD_BRK ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->thread_list, MAX_THRD_BRK, - sizeof (u_long), (xdrproc_t) xdr_u_long)) - return FALSE; - } else { - { - register u_long *genp; - - for (i = 0, genp = objp->thread_list; - i < MAX_THRD_BRK; ++i) { - IXDR_PUT_U_LONG(buf, *genp++); - } - } - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - if (!xdr_u_char (xdrs, &objp->type)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->thread_spec)) - return FALSE; - buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_u_short (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_loc)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_type)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->length)) - return FALSE; - - } else { - objp->handle = IXDR_GET_U_SHORT(buf); - objp->ee_loc = IXDR_GET_U_LONG(buf); - objp->ee_type = IXDR_GET_U_LONG(buf); - objp->length = IXDR_GET_U_SHORT(buf); - } - if (!xdr_u_char (xdrs, &objp->pass_count)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->curr_pass)) - return FALSE; - buf = XDR_INLINE (xdrs, ( MAX_THRD_BRK ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->thread_list, MAX_THRD_BRK, - sizeof (u_long), (xdrproc_t) xdr_u_long)) - return FALSE; - } else { - { - register u_long *genp; - - for (i = 0, genp = objp->thread_list; - i < MAX_THRD_BRK; ++i) { - *genp++ = IXDR_GET_U_LONG(buf); - } - } - } - return TRUE; - } - - if (!xdr_u_char (xdrs, &objp->type)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->thread_spec)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_loc)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->ee_type)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->length)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->pass_count)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->curr_pass)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->thread_list, MAX_THRD_BRK, - sizeof (u_long), (xdrproc_t) xdr_u_long)) - return FALSE; - return TRUE; -} - -bool_t -xdr_thread_name (XDR *xdrs, thread_name *objp) -{ - - if (!xdr_string (xdrs, objp, THREADNAMEMAX)) - return FALSE; - return TRUE; -} - -bool_t -xdr_KernThread (XDR *xdrs, KernThread *objp) -{ - - if (!xdr_u_int (xdrs, &objp->threadLi)) - return FALSE; - return TRUE; -} -bool_t xdr_thread_list(xdrs, objp) - XDR *xdrs; - struct thread_list *objp; -{ - return (xdr_array(xdrs, (char**)&objp->threads, &objp->nbThread, - UTHREAD_MAX, sizeof(KernThread), xdr_KernThread)); -} - -bool_t -xdr_ptrace_addr_data_in (XDR *xdrs, ptrace_addr_data_in *objp) -{ - - if (!xdr_ptracereq (xdrs, &objp->req)) - return FALSE; - switch (objp->req) { - case RPT_SETTHREADREGS: - if (!xdr_xdr_regs (xdrs, &objp->ptrace_addr_data_in_u.regs)) - return FALSE; - break; - case RPT_SETREGS: - if (!xdr_xdr_regs (xdrs, &objp->ptrace_addr_data_in_u.regs)) - return FALSE; - break; - case RPT_PSETTHREADREGS: - if (!xdr_array (xdrs, (char **)&objp->ptrace_addr_data_in_u.pregs.pregs_val, (u_int *) &objp->ptrace_addr_data_in_u.pregs.pregs_len, ~0, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - break; - case RPT_PSETREGS: - if (!xdr_array (xdrs, (char **)&objp->ptrace_addr_data_in_u.pregs.pregs_val, (u_int *) &objp->ptrace_addr_data_in_u.pregs.pregs_len, ~0, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - break; - case RPT_SETTHREADNAME: - if (!xdr_thread_name (xdrs, &objp->ptrace_addr_data_in_u.name)) - return FALSE; - break; - case RPT_WRITETEXT: - if (!xdr_xdr_mem (xdrs, &objp->ptrace_addr_data_in_u.mem)) - return FALSE; - break; - case RPT_WRITEDATA: - if (!xdr_xdr_mem (xdrs, &objp->ptrace_addr_data_in_u.mem)) - return FALSE; - break; - case RPT_SETBREAK: - if (!xdr_xdr_break (xdrs, &objp->ptrace_addr_data_in_u.breakp)) - return FALSE; - break; - default: - if (!xdr_u_int (xdrs, &objp->ptrace_addr_data_in_u.address)) - return FALSE; - break; - } - return TRUE; -} - -bool_t -xdr_ptrace_addr_data_out (XDR *xdrs, ptrace_addr_data_out *objp) -{ - - if (!xdr_ptracereq (xdrs, &objp->req)) - return FALSE; - switch (objp->req) { - case RPT_GETREGS: - if (!xdr_xdr_regs (xdrs, &objp->ptrace_addr_data_out_u.regs)) - return FALSE; - break; - case RPT_GETTHREADREGS: - if (!xdr_xdr_regs (xdrs, &objp->ptrace_addr_data_out_u.regs)) - return FALSE; - break; - case RPT_PGETREGS: - if (!xdr_array (xdrs, (char **)&objp->ptrace_addr_data_out_u.pregs.pregs_val, (u_int *) &objp->ptrace_addr_data_out_u.pregs.pregs_len, ~0, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - break; - case RPT_PGETTHREADREGS: - if (!xdr_array (xdrs, (char **)&objp->ptrace_addr_data_out_u.pregs.pregs_val, (u_int *) &objp->ptrace_addr_data_out_u.pregs.pregs_len, ~0, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - break; - case RPT_THREADLIST: - if (!xdr_thread_list (xdrs, &objp->ptrace_addr_data_out_u.threads)) - return FALSE; - break; - case RPT_GETTHREADNAME: - if (!xdr_thread_name (xdrs, &objp->ptrace_addr_data_out_u.name)) - return FALSE; - break; - case RPT_READTEXT: - if (!xdr_xdr_mem (xdrs, &objp->ptrace_addr_data_out_u.mem)) - return FALSE; - break; - case RPT_GETNAME: - if (!xdr_xdr_mem (xdrs, &objp->ptrace_addr_data_out_u.mem)) - return FALSE; - break; - case RPT_READDATA: - if (!xdr_xdr_mem (xdrs, &objp->ptrace_addr_data_out_u.mem)) - return FALSE; - break; - case RPT_GETBREAK: - if (!xdr_xdr_break (xdrs, &objp->ptrace_addr_data_out_u.breakp)) - return FALSE; - break; - default: - if (!xdr_u_int (xdrs, &objp->ptrace_addr_data_out_u.addr)) - return FALSE; - break; - } - return TRUE; -} - -bool_t -xdr_CHAR_DATA (XDR *xdrs, CHAR_DATA *objp) -{ - - if (!xdr_bytes (xdrs, (char **)&objp->CHAR_DATA_val, (u_int *) &objp->CHAR_DATA_len, NET_SAFE)) - return FALSE; - return TRUE; -} - -bool_t -xdr_one_arg (XDR *xdrs, one_arg *objp) -{ - - if (!xdr_string (xdrs, objp, NET_SAFE)) - return FALSE; - return TRUE; -} - /* now open_connex() routine which establishes a connection to server */ - -bool_t -xdr_debug_type (XDR *xdrs, debug_type *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} -#define DEBUGGER_IS_GDB 0x2 /* */ - -bool_t -xdr_open_in (XDR *xdrs, open_in *objp) -{ - - if (!xdr_vector (xdrs, (char *)objp->back_port, 16, - sizeof (u_char), (xdrproc_t) xdr_u_char)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->debug_type)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->flags)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->destination, 16, - sizeof (u_char), (xdrproc_t) xdr_u_char)) - return FALSE; - if (!xdr_one_arg (xdrs, &objp->user_name)) - return FALSE; - return TRUE; -} - -bool_t -xdr_open_out (XDR *xdrs, open_out *objp) -{ - register int32_t *buf; - - int i; - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, (2 + ( 4 )) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_u_long (xdrs, &objp->port)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->pad, 4, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - if (!xdr_u_int (xdrs, &objp->fp)) - return FALSE; - - } else { - IXDR_PUT_U_LONG(buf, objp->port); - { - register u_int *genp; - - for (i = 0, genp = objp->pad; - i < 4; ++i) { - IXDR_PUT_U_LONG(buf, *genp++); - } - } - IXDR_PUT_U_LONG(buf, objp->fp); - } - if (!xdr_u_char (xdrs, &objp->cmd_table_num)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->cmd_table_vers)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->server_vers)) - return FALSE; - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, (2 + ( 4 )) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_u_long (xdrs, &objp->port)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->pad, 4, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - if (!xdr_u_int (xdrs, &objp->fp)) - return FALSE; - - } else { - objp->port = IXDR_GET_U_LONG(buf); - { - register u_int *genp; - - for (i = 0, genp = objp->pad; - i < 4; ++i) { - *genp++ = IXDR_GET_U_LONG(buf); - } - } - objp->fp = IXDR_GET_U_LONG(buf); - } - if (!xdr_u_char (xdrs, &objp->cmd_table_num)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->cmd_table_vers)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->server_vers)) - return FALSE; - return TRUE; - } - - if (!xdr_u_long (xdrs, &objp->port)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->pad, 4, - sizeof (u_int), (xdrproc_t) xdr_u_int)) - return FALSE; - if (!xdr_u_int (xdrs, &objp->fp)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->cmd_table_num)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->cmd_table_vers)) - return FALSE; - if (!xdr_u_short (xdrs, &objp->server_vers)) - return FALSE; - return TRUE; -} - /* now close_connex() routine which detaches from server */ - -bool_t -xdr_close_control (XDR *xdrs, close_control *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_close_in (XDR *xdrs, close_in *objp) -{ - - if (!xdr_close_control (xdrs, &objp->control)) - return FALSE; - return TRUE; -} - /* now send_signal() routine which sends signals to processes like kill(2) */ - -bool_t -xdr_signal_in (XDR *xdrs, signal_in *objp) -{ - - if (!xdr_int (xdrs, &objp->pid)) - return FALSE; - if (!xdr_int (xdrs, &objp->sig)) - return FALSE; - return TRUE; -} - -bool_t -xdr_signal_out (XDR *xdrs, signal_out *objp) -{ - - if (!xdr_int (xdrs, &objp->kill_return)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - return TRUE; -} - /* now wait_info() routine which returns results of polling the wait status - of a process/actor. It may return 0 if running, else pid or -1 */ - -bool_t -xdr_stop_code (XDR *xdrs, stop_code *objp) -{ - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_wait_in (XDR *xdrs, wait_in *objp) -{ - - if (!xdr_int (xdrs, &objp->pid)) - return FALSE; - return TRUE; -} - -bool_t -xdr_wait_out (XDR *xdrs, wait_out *objp) -{ - register int32_t *buf; - - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->wait_return)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_int (xdrs, &objp->status)) - return FALSE; - - } else { - IXDR_PUT_LONG(buf, objp->wait_return); - IXDR_PUT_LONG(buf, objp->errNo); - IXDR_PUT_LONG(buf, objp->status); - } - if (!xdr_stop_code (xdrs, &objp->reason)) - return FALSE; - buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->PC)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->SP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->FP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->thread)) - return FALSE; - } else { - IXDR_PUT_LONG(buf, objp->handle); - IXDR_PUT_U_LONG(buf, objp->PC); - IXDR_PUT_U_LONG(buf, objp->SP); - IXDR_PUT_U_LONG(buf, objp->FP); - IXDR_PUT_U_LONG(buf, objp->thread); - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->wait_return)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_int (xdrs, &objp->status)) - return FALSE; - - } else { - objp->wait_return = IXDR_GET_LONG(buf); - objp->errNo = IXDR_GET_LONG(buf); - objp->status = IXDR_GET_LONG(buf); - } - if (!xdr_stop_code (xdrs, &objp->reason)) - return FALSE; - buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->PC)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->SP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->FP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->thread)) - return FALSE; - } else { - objp->handle = IXDR_GET_LONG(buf); - objp->PC = IXDR_GET_U_LONG(buf); - objp->SP = IXDR_GET_U_LONG(buf); - objp->FP = IXDR_GET_U_LONG(buf); - objp->thread = IXDR_GET_U_LONG(buf); - } - return TRUE; - } - - if (!xdr_int (xdrs, &objp->wait_return)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_int (xdrs, &objp->status)) - return FALSE; - if (!xdr_stop_code (xdrs, &objp->reason)) - return FALSE; - if (!xdr_int (xdrs, &objp->handle)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->PC)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->SP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->FP)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->thread)) - return FALSE; - return TRUE; -} - /* now ptrace() routine. This matches the Sun UNIX ptrace as well as - some additions */ - -bool_t -xdr_ptrace_in (XDR *xdrs, ptrace_in *objp) -{ - - if (!xdr_int (xdrs, &objp->pid)) - return FALSE; - if (!xdr_ptrace_addr_data_in (xdrs, &objp->addr)) - return FALSE; - if (!xdr_u_int (xdrs, &objp->data)) - return FALSE; - if (!xdr_u_int (xdrs, &objp->flags)) - return FALSE; - return TRUE; -} - -bool_t -xdr_ptrace_out (XDR *xdrs, ptrace_out *objp) -{ - - if (!xdr_ptrace_addr_data_out (xdrs, &objp->addr)) - return FALSE; - if (!xdr_int (xdrs, &objp->result)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - return TRUE; -} - -bool_t -xdr_one_symbol (XDR *xdrs, one_symbol *objp) -{ - - if (!xdr_string (xdrs, &objp->symbolName, ~0)) - return FALSE; - if (!xdr_long (xdrs, &objp->symbolValue)) - return FALSE; - return TRUE; -} - -bool_t -xdr_all_symbols (XDR *xdrs, all_symbols *objp) -{ - - if (!xdr_array (xdrs, (char **)&objp->all_symbols_val, (u_int *) &objp->all_symbols_len, ~0, - sizeof (one_symbol), (xdrproc_t) xdr_one_symbol)) - return FALSE; - return TRUE; -} - -bool_t -xdr_get_global_symbols_out (XDR *xdrs, get_global_symbols_out *objp) -{ - - if (!xdr_all_symbols (xdrs, &objp->symbols)) - return FALSE; - return TRUE; -} - -bool_t -xdr_get_text_data_in (XDR *xdrs, get_text_data_in *objp) -{ - - if (!xdr_int (xdrs, &objp->pid)) - return FALSE; - if (!xdr_string (xdrs, &objp->actorName, 16)) - return FALSE; - return TRUE; -} - -bool_t -xdr_get_text_data_out (XDR *xdrs, get_text_data_out *objp) -{ - register int32_t *buf; - - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->result)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textSize)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataSize)) - return FALSE; - } else { - IXDR_PUT_LONG(buf, objp->result); - IXDR_PUT_LONG(buf, objp->errNo); - IXDR_PUT_U_LONG(buf, objp->textStart); - IXDR_PUT_U_LONG(buf, objp->textSize); - IXDR_PUT_U_LONG(buf, objp->dataStart); - IXDR_PUT_U_LONG(buf, objp->dataSize); - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->result)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textSize)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataSize)) - return FALSE; - } else { - objp->result = IXDR_GET_LONG(buf); - objp->errNo = IXDR_GET_LONG(buf); - objp->textStart = IXDR_GET_U_LONG(buf); - objp->textSize = IXDR_GET_U_LONG(buf); - objp->dataStart = IXDR_GET_U_LONG(buf); - objp->dataSize = IXDR_GET_U_LONG(buf); - } - return TRUE; - } - - if (!xdr_int (xdrs, &objp->result)) - return FALSE; - if (!xdr_int (xdrs, &objp->errNo)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->textSize)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataStart)) - return FALSE; - if (!xdr_u_long (xdrs, &objp->dataSize)) - return FALSE; - return TRUE; -} - -bool_t -xdr_one_signal (XDR *xdrs, one_signal *objp) -{ - - if (!xdr_u_int (xdrs, &objp->number)) - return FALSE; - if (!xdr_string (xdrs, &objp->name, ~0)) - return FALSE; - return TRUE; -} - -bool_t -xdr_all_signals (XDR *xdrs, all_signals *objp) -{ - - if (!xdr_array (xdrs, (char **)&objp->all_signals_val, (u_int *) &objp->all_signals_len, ~0, - sizeof (one_signal), (xdrproc_t) xdr_one_signal)) - return FALSE; - return TRUE; -} - -bool_t -xdr_get_signal_names_out (XDR *xdrs, get_signal_names_out *objp) -{ - - if (!xdr_all_signals (xdrs, &objp->signals)) - return FALSE; - return TRUE; -} - /* now define the actual calls we support */ diff --git a/c/src/librdbg/src/m68k/excep_f.c b/c/src/librdbg/src/m68k/excep_f.c deleted file mode 100644 index 5f75f6696f..0000000000 --- a/c/src/librdbg/src/m68k/excep_f.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - ************************************************************************** - * - * Component = - * - * Synopsis = rdbg/m68k/excep_f.c - * - * $Id$ - * - ************************************************************************** - */ - -#include <rtems.h> -#include <rtems/error.h> -#include <assert.h> -#include <errno.h> -#include <rdbg/rdbg.h> -#include <rdbg/servrpc.h> - - int -ExcepToSig (Exception_context * ctx) -{ - int excep = getExcNum (ctx); - - switch (excep) { - case 2: - return 10; - break; /* bus error */ - case 3: - return 10; - break; /* address error */ - case 4: - return 4; - break; /* illegal instruction */ - case 5: - return 8; - break; /* zero divide */ - case 6: - return 8; - break; /* chk instruction */ - case 7: - return 8; - break; /* trapv instruction */ - case 8: - return 11; - break; /* privilege violation */ - case 9: - return 5; - break; /* trace trap */ - case 10: - return 4; - break; /* line 1010 emulator */ - case 11: - return 4; - break; /* line 1111 emulator */ - - /* - * Coprocessor protocol violation. Using a standard MMU or FPU - * this cannot be triggered by software. Call it a SIGBUS. - */ - case 13: - return 10; - break; - - case 31: - return 2; - break; /* interrupt */ - case 33: - return 5; - break; /* monitor breakpoint */ - case 34: - return 2; - break; /* lets use this for SCC1 interrupt */ - case 35: - return 5; - break; /* rdbg breakpoint */ - case 36: - return 2; - break; /* enter RDBG */ - /* - * This is a trap #8 instruction. Apparently it is someone's software - * convention for some sort of SIGFPE condition. Whose? How many - * people are being screwed by having this code the way it is? - * Is there a clean solution? - */ - case 40: - return 8; - break; /* floating point err */ - - case 47: - return 5; - break; /* rdbg breakpoint */ - - case 48: - return 8; - break; /* floating point err */ - case 49: - return 8; - break; /* floating point err */ - case 50: - return 8; - break; /* zero divide */ - case 51: - return 8; - break; /* underflow */ - case 52: - return 8; - break; /* operand error */ - case 53: - return 8; - break; /* overflow */ - case 54: - return 8; - break; /* NAN */ - default: - return 7; /* "software generated" */ - } - return SIGKILL; -} - -/*----- Breakpoint Exception management -----*/ - - /* - * Handler for Breakpoint Exceptions : - * software breakpoints. - */ - - void -BreakPointExcHdl (CPU_Exception_frame * ctx) -{ - rtems_status_code status; - rtems_id continueSemId; - - connect_rdbg_exception (); /* monitor stub changes trace vector */ - if ((justSaveContext) && (ctx->vecnum == 47)) { /* break */ - PushSavedExceptCtx (_Thread_Executing->Object.id, ctx); - justSaveContext = 0; - } else { - if (ctx->vecnum != 9) { /* trace */ - NbSerializedCtx++; - rtems_semaphore_obtain (serializeSemId, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - NbSerializedCtx--; - } - - currentTargetThread = _Thread_Executing->Object.id; - -#ifdef DDEBUG - printk ("----------------------------------------------------------\n"); - printk ("Exception %d caught at PC %x by thread %d\n", - ctx->vecnum, ctx->pc, _Thread_Executing->Object.id); - printk ("----------------------------------------------------------\n"); - printk ("Processor execution context at time of the fault was :\n"); - printk ("----------------------------------------------------------\n"); - printk ("\t A0 = %x\n", ctx->a0); - printk ("\t A1 = %x\n", ctx->a1); - printk ("\t A2 = %x\n", ctx->a2); - printk ("\t A3 = %x\n", ctx->a3); - printk ("\t A4 = %x\n", ctx->a4); - printk ("\t A5 = %x\n", ctx->a5); - printk ("\t A6 = %x\n", ctx->a6); - printk ("\t A7 = %x\n", ctx->a7); - printk ("\t D0 = %x\n", ctx->d0); - printk ("\t D1 = %x\n", ctx->d1); - printk ("\t D2 = %x\n", ctx->d2); - printk ("\t D3 = %x\n", ctx->d3); - printk ("\t D4 = %x\n", ctx->d4); - printk ("\t D5 = %x\n", ctx->d5); - printk ("\t D6 = %x\n", ctx->d6); - printk ("\t D7 = %x\n", ctx->d7); - printk ("\t SR = %x\n", ctx->sr); -#endif - - status = rtems_semaphore_create (rtems_build_name ('D', 'B', 'G', 'c'), - 0, - RTEMS_FIFO | - RTEMS_COUNTING_SEMAPHORE | - RTEMS_NO_INHERIT_PRIORITY | - RTEMS_NO_PRIORITY_CEILING | - RTEMS_LOCAL, 0, &continueSemId); - if (status != RTEMS_SUCCESSFUL) - rtems_panic ("Can't create continue semaphore: `%s'\n", - rtems_status_text (status)); - - PushExceptCtx (_Thread_Executing->Object.id, continueSemId, ctx); - - switch (ctx->vecnum) { - case 9: /* trace */ - DPRINTF ((" TRACE EXCEPTION !!!\n")); - ctx->sr &= ~(1 << 15); - ExitForSingleStep--; - rtems_semaphore_release (wakeupEventSemId); - break; - - case 47: /* trap #15 */ - DPRINTF ((" BREAKPOINT EXCEPTION !!!\n")); - rtems_semaphore_release (wakeupEventSemId); - break; - - case 36: /* trap #4 */ - DPRINTF ((" ENTER RDBG !!!\n")); - rtems_semaphore_release (wakeupEventSemId); - break; - - default: - DPRINTF ((" OTHER EXCEPTION !!!\n")); - rtems_semaphore_release (wakeupEventSemId); - break; - } - - rtems_semaphore_obtain (continueSemId, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - - PopExceptCtx (_Thread_Executing->Object.id); - rtems_semaphore_delete (continueSemId); - } - - connect_rdbg_exception (); /* monitor stub changes trace vector */ -} diff --git a/c/src/librdbg/src/m68k/rdbg_cpu_asm.S b/c/src/librdbg/src/m68k/rdbg_cpu_asm.S deleted file mode 100644 index d9f4dc9dad..0000000000 --- a/c/src/librdbg/src/m68k/rdbg_cpu_asm.S +++ /dev/null @@ -1,244 +0,0 @@ -/* rdbg_cpu_asm.s - * - * This file contains all assembly code for the Motorola m68k implementation - * of RDBG. - * - * $Id$ - * - */ - -#include <rtems/asm.h> -#include <rtems/score/cpu.h> - - BEGIN_CODE - -/* - * void copyback_data_cache_and_invalidate_instr_cache(addr, size) - * - * This routine performs a copy of the data cache - * and invalidate the instruction cache - */ - - .align 2 - PUBLIC (copyback_data_cache_and_invalidate_instr_cache) - -SYM (copyback_data_cache_and_invalidate_instr_cache): - nop | how? - rts - - - -/* - * void enterRdbg(void) - * - * This function performs trap #4 - * It is used : - * 1 - in the user code, to simulate a Breakpoint. - * (with justSaveContext = 0) - * 2 - in the RDBG code, to push a ctx in the list. - * (with justSaveContext = 1) - * - * In most of case, it will be use as described in 1. - * The 2nd possibility will be used by RDBG to obtain - * its own ctx - */ - - PUBLIC (enterRdbg) - -SYM (enterRdbg): - trap #4 - rts - - -/* - * void excHandler(void) - * - * lotsa copypaste from cpu_asm.S - * - */ - -/* - * The RTEMS jump table pushes vector - * - * The two types of exception frames on m68000 are - * - * uint16_t sr <- sp - * uint32_t pc - * - * uint16_t fc <- sp - * uint32_t addr - * uint16_t instr - * uint16_t sr - * uint32_t pc - * - * after real frame we push d0-d1/a0-a1 - * - * after that we push CPU_Exception_frame - * - * exframe <- sp - * d0-d1/a0-a1 - * frame - */ -#if ( M68K_COLDFIRE_ARCH == 1 ) -.set SR_OFFSET, 2 | Status register offset -.set PC_OFFSET, 4 | Program Counter offset -.set FVO_OFFSET, 0 | Format/vector offset -#elif ( M68K_HAS_VBR == 1 ) -.set SR_OFFSET, 0 | Status register offset -.set PC_OFFSET, 2 | Program Counter offset -.set FVO_OFFSET, 6 | Format/vector offset -#else -.set SR_OFFSET, 2 | Status register offset -.set PC_OFFSET, 4 | Program Counter offset -.set FVO_OFFSET, 0 | Format/vector offset placed in the stack -#endif /* M68K_HAS_VBR */ - - .align 4 - - PUBLIC (excHandler) - PUBLIC (BreakPointExcHdl) - -SYM (excFormatLength): - /* - * size of exception stack frame depending on format type - * This is valid for m68k with VBR (68020/030/040/CPU32/CPU32+) - * size | format/name - */ - dc.w 4*2 | $0 standard - dc.w 4*2 | $1 throwaway stackframe - dc.w 6*2 | $2 CHK/CHK2/TRAPcc/TRAPV/DIV0/TRACE - dc.w 6*2 | $3 Coprocessor Post-Instruction (040) - dc.w 4*2 | $4 reserved - dc.w 4*2 | $5 reserved - dc.w 4*2 | $6 reserved - dc.w 30*2 | $7 Access Error (040) - dc.w 29*2 | $8 Bus Error (020) - dc.w 10*2 | $9 Coprocessor Mid-Instruction (020) - dc.w 16*2 | $A Short Bus-Error (020) - dc.w 46*2 | $B Long Bus-Error (020) - dc.w 12*2 | $C Bus Error/Address Error (CPU32) - dc.w 4*2 | $D reserved - dc.w 4*2 | $E reserved - dc.w 4*2 | $F reserved - -SYM (excHandler): -#if ( M68K_COLDFIRE_ARCH == 1 ) - lea a7@(-16),a7 - movm.l d0-d1/a0-a1,a7@ | save d0-d1,a0-a1 - movew a7@(16+FVO_OFFSET),d0 | d0 = F/VO - andl #0x0ffc,d0 | d0 = vector offset in vbr - lsrl #2,d0 | d0 = vector number - lea a7@(16),a1 | address of orig frame - lea a7@(16),a0 | address of orig frame - lea a0@(8),a0 | skip exception frame -#else - moveml d0-d1/a0-a1,a7@- | save d0-d1,a0-a1 - movew a7@(16+FVO_OFFSET),d0 | d0 = F/VO -#if ( M68K_HAS_VBR == 1 ) - movew d0,d1 | d1 is copy of F/VO - andl #0x0ffc,d0 | d0 = vector offset in vbr - lsrl #2,d0 | d0 = vector number - lsrl #8,d1 - lsrl #3,d1 - andl #0x001f,d1 | d1 is format number - lea SYM (excFormatLength),a1 - movew a1@(d1),d1 | d1 = size of exc frame - lea a7@(16,d1),a0 - lea a7@(16),a1 | address of orig frame - -#else /* (M68k_HAS_VBR == 0) */ - lea a7@(16),a1 | address of orig frame - lea a1@(6),a0 | skip stack frame -/* - * skip bus error stack frame... - */ - cmpi.l #3,d0 - bgt 1f | if >3 then normal exc - lea a1@(8),a0 | skip extra stuff - lea a0@(6),a0 | a0 = orig sp -1: -#endif /* M68K_HAS_VBR */ -#endif /* ( M68K_COLDFIRE_ARCH == 0 ) */ - - /* - * at this point: - * a0 points to stack above exception stack frame - * a1 points to start of exception stack frame - */ - - movew a1@(SR_OFFSET),d1 | d1 = sr - andl #0xffff,d1 - lea a7@(-76),a7 | reserve room for exception frame -| build CPU_Exception_frame - movel d0,a7@ | vecnum - movel d1,a7@(4) | sr - movel a1@(PC_OFFSET),d1 | d1 = pc -#if ( M68K_COLDFIRE_ARCH == 0 ) - cmpiw #47,d0 | trap #15, breakpoint? -#else - cmpil #47,d0 | trap #15, breakpoint? -#endif - bne 2f - subql #2,d1 | real PC is at trap insn -2: movel d1,a7@(8) | store pc to exframe struct - movel a7@(76),a7@(12) | the orig d0 pushed at beginning - movel a7@(76+4),a7@(16) | the orig d1 pushed at beginning - movel d2,a7@(20) - movel d3,a7@(24) - movel d4,a7@(28) - movel d5,a7@(32) - movel d6,a7@(36) - movel d7,a7@(40) - movel a7@(76+8),a7@(44) | the orig a0 pushed at beginning - movel a7@(76+12),a7@(48) | the orig a1 pushed at beginning - movel a2,a7@(52) - movel a3,a7@(56) - movel a4,a7@(60) - movel a5,a7@(64) - movel a6,a7@(68) - movel a0,a7@(72) | stack pointer before exception - lea a7@,a0 | exframe address - movel a1,a7@- | save top of orig frame - movel a0,a7@- | push exframe address - jsr SYM(BreakPointExcHdl) - addql #4,a7 | pop exframe address - movel a7@+,a1 | restore orig frame address -| XXX what should be restored from exframe?? - movel a7@(4),d1 | sr - movew d1,a1@(SR_OFFSET) | store sr to frame XXX ??? - movel a7@(8),a1@(PC_OFFSET) | store pc to frame XXX ??? - movel a7@(12),a7@(76) | d0 to be restored from stack - movel a7@(16),a7@(76+4) | d1 to be restored from stack - movel a7@(20),d2 - movel a7@(24),d3 - movel a7@(28),d4 - movel a7@(32),d5 - movel a7@(36),d6 - movel a7@(40),d7 - movel a7@(44),a7@(76+8) | a0 to be restored from stack - movel a7@(48),a7@(76+12) | a1 to be restored from stack - movel a7@(52),a2 - movel a7@(56),a3 - movel a7@(60),a4 - movel a7@(64),a5 - movel a7@(68),a6 - addl #76,a7 | pop exframe - -#if ( M68K_COLDFIRE_ARCH == 0 ) - moveml a7@+,d0-d1/a0-a1 | restore d0-d1,a0-a1 -#else - moveml a7@,d0-d1/a0-a1 | restore d0-d1,a0-a1 - lea a7@(16),a7 -#endif - -#if ( M68K_HAS_VBR == 0 ) - addql #2,a7 | pop format/id -#endif /* M68K_HAS_VBR */ - -| XXX bus err cleanup - - rte - -END_CODE - -END diff --git a/c/src/librdbg/src/m68k/rdbg_f.c b/c/src/librdbg/src/m68k/rdbg_f.c deleted file mode 100644 index fd1416a6ec..0000000000 --- a/c/src/librdbg/src/m68k/rdbg_f.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - ************************************************************************** - * - * Component = - * - * Synopsis = rdbg/m68k/rdbg_f.c - * - * $Id$ - * - ************************************************************************** - */ - -#include <assert.h> -#include <errno.h> -#include <rdbg/reg.h> -#include <rdbg/remdeb.h> -#include <rdbg/rdbg.h> -#include <rtems/score/cpu.h> -#include <rtems/score/thread.h> - -m68k_isr_entry set_vector( - rtems_isr_entry handler, - rtems_vector_number vector, - int type -); - -void CtxToRegs (const CPU_Exception_frame * ctx, xdr_regs * regs) -{ - regs->r_dreg[0] = ctx->d0; - regs->r_dreg[1] = ctx->d1; - regs->r_dreg[2] = ctx->d2; - regs->r_dreg[3] = ctx->d3; - regs->r_dreg[4] = ctx->d4; - regs->r_dreg[5] = ctx->d5; - regs->r_dreg[6] = ctx->d6; - regs->r_dreg[7] = ctx->d7; - - regs->r_areg[0] = ctx->a0; - regs->r_areg[1] = ctx->a1; - regs->r_areg[2] = ctx->a2; - regs->r_areg[3] = ctx->a3; - regs->r_areg[4] = ctx->a4; - regs->r_areg[5] = ctx->a5; - regs->r_areg[6] = ctx->a6; - regs->r_areg[7] = ctx->a7; - - regs->r_sr = ctx->sr; - regs->r_pc = ctx->pc; - regs->r_vec = ctx->vecnum; -} - - void -RegsToCtx (const xdr_regs * regs, CPU_Exception_frame * ctx) -{ - ctx->d0 = regs->r_dreg[0]; - ctx->d1 = regs->r_dreg[1]; - ctx->d2 = regs->r_dreg[2]; - ctx->d3 = regs->r_dreg[3]; - ctx->d4 = regs->r_dreg[4]; - ctx->d5 = regs->r_dreg[5]; - ctx->d6 = regs->r_dreg[6]; - ctx->d7 = regs->r_dreg[7]; - - ctx->a0 = regs->r_areg[0]; - ctx->a1 = regs->r_areg[1]; - ctx->a2 = regs->r_areg[2]; - ctx->a3 = regs->r_areg[3]; - ctx->a4 = regs->r_areg[4]; - ctx->a5 = regs->r_areg[5]; - ctx->a6 = regs->r_areg[6]; - ctx->a7 = regs->r_areg[7]; - - ctx->sr = regs->r_sr; - ctx->pc = regs->r_pc; - ctx->vecnum = regs->r_vec; -} - - void -get_ctx_thread (Thread_Control * thread, CPU_Exception_frame * ctx) -{ - /* - * ISR stores d0-d1/a0-a1, calls _Thread_Dispatch - * _Thread_Dispatch calls _Context_Switch == _CPU_Context_switch - * _CPU_Context_switch stores/restores sr,d2-d7,a2-a7 - * so if my reasoning is correct, *sp points to a location in - * _Thread_Dispatch - */ - ctx->vecnum = 0xdeadbeef; - ctx->sr = thread->Registers.sr; - ctx->pc = *(uint32_t *) thread->Registers.a7_msp; - ctx->d0 = 0xdeadbeef; - ctx->d1 = 0xdeadbeef; - ctx->a0 = 0xdeadbeef; - ctx->a1 = 0xdeadbeef; - - ctx->a2 = (uint32_t) thread->Registers.a2; - ctx->a3 = (uint32_t) thread->Registers.a3; - ctx->a4 = (uint32_t) thread->Registers.a4; - ctx->a5 = (uint32_t) thread->Registers.a5; - ctx->a6 = (uint32_t) thread->Registers.a6; - ctx->a7 = (uint32_t) thread->Registers.a7_msp; - ctx->d2 = thread->Registers.d2; - ctx->d3 = thread->Registers.d3; - ctx->d4 = thread->Registers.d4; - ctx->d5 = thread->Registers.d5; - ctx->d6 = thread->Registers.d6; - ctx->d7 = thread->Registers.d7; -} - - void -set_ctx_thread (Thread_Control * thread, CPU_Exception_frame * ctx) -{ - thread->Registers.sr = ctx->sr; - thread->Registers.d2 = ctx->d2; - thread->Registers.d3 = ctx->d3; - thread->Registers.d4 = ctx->d4; - thread->Registers.d5 = ctx->d5; - thread->Registers.d6 = ctx->d6; - thread->Registers.d7 = ctx->d7; - thread->Registers.a2 = (void *) ctx->a2; - thread->Registers.a3 = (void *) ctx->a3; - thread->Registers.a4 = (void *) ctx->a4; - thread->Registers.a5 = (void *) ctx->a5; - thread->Registers.a6 = (void *) ctx->a6; - thread->Registers.a7_msp = (void *) ctx->a7; -} - - int -Single_Step (CPU_Exception_frame * ctx) -{ - if ((ctx->sr & (1 << 15)) != 0 || ExitForSingleStep != 0) { - /* - * Check coherency - */ - assert ((ctx->sr & (1 << 15)) != 0); - assert (ExitForSingleStep != 0); - return 0; - } - ctx->sr |= 1 << 15; - ++ExitForSingleStep; - return 0; -} - - int -CheckForSingleStep (CPU_Exception_frame * ctx) -{ - if (ExitForSingleStep) { - ctx->sr &= ~(1 << 15); - ExitForSingleStep = 0; - return 1; - } - return 0; -} - - void -CancelSingleStep (CPU_Exception_frame * ctx) -{ - /* - * Cancel scheduled SS - */ - ctx->sr &= ~(1 << 15); - ExitForSingleStep--; -} - -extern rtems_isr excHandler (); - - void -connect_rdbg_exception (void) -{ - set_vector (excHandler, 9, 0); - set_vector (excHandler, 47, 0); - set_vector (excHandler, 36, 0); -} - -void -disconnect_rdbg_exception (void) -{ -} |