⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdr_regs.c

📁 早期freebsd实现
💻 C
字号:
/* xdr_regs.c - xdr routines for 68k registers *//* Copyright 1984, 1985, 1986, 1987, 1988, 1989, 1992 Free Software Foundation, Inc.   This code was donated by Wind River Systems, Inc. *//*DESCRIPTIONThis module contains the eXternal Data Representation (XDR) routinesfor the GDB interface for VxWorks.*/#include "vxWorks.h"#include <rpc/rpc.h>#include "reg.h"#include "xdr_regs.h"#ifdef I80960/********************************************************************************* xdr_regs - xdr routine for i960 registers*/bool_t xdr_regs (xdrs, objp)    XDR *xdrs;    struct regs *objp;    {    if (! xdr_opaque(xdrs, (char *) objp->r_lreg, 16 * sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) objp->r_greg, 16 * sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) &objp->r_pcw, sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) &objp->r_acw, sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) &objp->r_tcw, sizeof(int)))	return(FALSE);    return(TRUE);    }/********************************************************************************* xdr_fp_status - xdr routine for i960 floating point registers*/bool_t xdr_fp_status (xdrs, objp)    XDR *xdrs;    struct fp_status *objp;    {    unsigned int size = 4 * FP_REG_SIZE;    /* We use xdr_bytes to indicate how many bytes of FP regs there are! */    if (! xdr_bytes (xdrs, (char *) objp->fps_regs, &size, 4 * FP_REG_SIZE))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_ext_fp - xdr for a single fp register*/bool_t xdr_ext_fp (xdrs, objp)    XDR *xdrs;    char *objp;    {    unsigned int size = FP_REG_SIZE;    if (! xdr_bytes (xdrs, objp, &size, FP_REG_SIZE)) 	return(FALSE);    return(TRUE);    }#else	/* Must be 68K if it isn't i960 -- for now.  FIXME!  *//********************************************************************************* xdr_regs - xdr routine for 68k registers*/bool_t xdr_regs (xdrs, objp)    XDR *xdrs;    struct regs *objp;    {    if (! xdr_opaque(xdrs, (char *) objp->r_dreg, 8 * sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) objp->r_areg, 8 * sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) &objp->r_sr, sizeof(int)))	return(FALSE);    if (! xdr_opaque(xdrs, (char *) &objp->r_pc, sizeof(int)))	return(FALSE);    return(TRUE);    }/********************************************************************************* xdr_ext_fp - xdr for a single fp register*/bool_t xdr_ext_fp (xdrs, objp)    XDR *xdrs;    ext_fp *objp;    {    if (! xdr_vector(xdrs, (char *) objp->fp, 3, sizeof(int), xdr_int)) 	return(FALSE);    return(TRUE);    }/********************************************************************************* xdr_fp_status - xdr routine for floating point registers*/bool_t xdr_fp_status (xdrs, objp)    XDR *xdrs;    struct fp_status *objp;    {    if (! xdr_vector (xdrs, (char *) objp->fps_regs, 8, 		sizeof(ext_fp), xdr_ext_fp))	return (FALSE);    if (! xdr_int (xdrs, &objp->fps_control)) 	return (FALSE);    if (! xdr_int (xdrs, &objp->fps_status)) 	return (FALSE);    if (! xdr_int (xdrs, &objp->fps_iaddr)) 	return (FALSE);    if (! xdr_int (xdrs, &objp->fps_code)) 	return (FALSE);    if (! xdr_int (xdrs, &objp->fps_flags)) 	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_fpa_status - xdr for fpa status*/bool_t xdr_fpa_status (xdrs, objp)    XDR *xdrs;    struct fpa_status *objp;    {    if (! xdr_u_int (xdrs, &objp->fpas_state)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_imask)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_load_ptr)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_ierr)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_act_instr)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_nxt_instr)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_act_d1half)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_act_d2half)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_nxt_d1half)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_nxt_d2half)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_mode3_0)) 	return (FALSE);    if (! xdr_u_int (xdrs, &objp->fpas_wstatus)) 	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_fpa_long - xdr for fpa data register*/bool_t xdr_fpa_long (xdrs,objp)    XDR *xdrs;    fpa_long *objp;    {    if (! xdr_vector (xdrs, (char *) objp->fpl_data, 2, sizeof(int), xdr_int)) 	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_fpa_regs - xdr for fpa_regs */bool_t xdr_fpa_regs (xdrs, objp)    XDR *xdrs;    struct fpa_regs *objp;    {    if (! xdr_u_int (xdrs, &objp->fpar_flags)) 	return (FALSE);    if (! xdr_fpa_status (xdrs, &objp->fpar_status)) 	return (FALSE);    if (! xdr_vector (xdrs, (char *) objp->fpar_data,     		    FPA_NDATA_REGS, sizeof(fpa_long), xdr_fpa_long)) 	return (FALSE);    return (TRUE);    }#endif /* I80960 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -