static void copy_reg(unsigned reg, frame_state *udata, frame_state *target_udata) { word_type *preg = get_reg_addr (reg, udata, ((void *)0) ); word_type *ptreg = get_reg_addr (reg, target_udata, ((void *)0) ); memcpy(ptreg, preg, __builtin_dwarf_reg_size (reg)); }
static void copy_reg (unsigned int reg, frame_state *udata, /* {{ dg-error "expected" }} */ frame_state *target_udata) { word_type *preg = get_reg_addr (reg, udata, 0); word_type *ptreg = get_reg_addr (reg, target_udata, 0); memcpy (ptreg, preg, __builtin_dwarf_reg_size (reg)); }
/* * Get contents of register REGNO in task TASK. */ static long get_reg(struct task_struct * task, unsigned long regno) { /* Special hack for fpcr -- combine hardware and software bits. */ if (regno == 63) { unsigned long fpcr = *get_reg_addr(task, regno); unsigned long swcr = task->thread.flags & IEEE_SW_MASK; swcr = swcr_update_status(swcr, fpcr); return fpcr | swcr; } return *get_reg_addr(task, regno); }
static unsigned long get_reg(struct task_struct * task, unsigned long regno) { if (regno == 63) { unsigned long fpcr = *get_reg_addr(task, regno); unsigned long swcr = task_thread_info(task)->ieee_state & IEEE_SW_MASK; swcr = swcr_update_status(swcr, fpcr); return fpcr | swcr; } return *get_reg_addr(task, regno); }
/* * Write contents of register REGNO in task TASK. */ static int put_reg(struct task_struct *task, unsigned long regno, long data) { if (regno == 63) { task->thread.flags = ((task->thread.flags & ~IEEE_SW_MASK) | (data & IEEE_SW_MASK)); data = (data & FPCR_DYN_MASK) | ieee_swcr_to_fpcr(data); } *get_reg_addr(task, regno) = data; return 0; }
static __inline__ void put_reg(unsigned reg, void *val, frame_state *udata) { *get_reg_addr (reg, udata, ((void *)0) ) = (word_type)(ptr_type) val; }
static __inline__ void * get_reg(unsigned reg, frame_state *udata, frame_state *sub_udata) { return (void *)(ptr_type) *get_reg_addr (reg, udata, sub_udata); }