Lines Matching defs:ea

72 	struct insn_ea *ea, int modreg)
84 ea->ea_regnum = 8 + (modreg & 7);
88 ea->ea_regnum = modreg & 0xf;
89 ea->ea_flags = EA_DIRECT;
91 __func__, ea->ea_regnum));
94 ea->ea_flags = EA_IMMED;
95 sig = fetch_immed(frame, insn, &ea->ea_immed[0]);
106 ea->ea_flags = EA_FRAME_EA;
107 ea->ea_fea = frame->f_fmt4.f_fa;
109 __func__, (void *)ea->ea_fea, insn->is_datasize));
112 ea->ea_flags |= EA_POSTINCR;
115 ea->ea_flags |= EA_PREDECR;
121 ea->ea_fea -= 8;
131 ea->ea_flags = 0;
133 __func__, ea->ea_regnum));
137 ea->ea_flags = EA_POSTINCR;
139 __func__, ea->ea_regnum));
143 ea->ea_flags = EA_PREDECR;
145 __func__, ea->ea_regnum));
149 ea->ea_flags = EA_OFFSET;
150 sig = fetch_disp(frame, insn, 1, &ea->ea_offset);
152 __func__, ea->ea_regnum));
156 ea->ea_flags = EA_INDEXED;
157 sig = decode_ea6(frame, insn, ea, modreg);
161 ea->ea_regnum = (modreg & 7);
165 ea->ea_flags = EA_ABS;
167 &ea->ea_absaddr);
173 ea->ea_flags = EA_ABS;
175 &ea->ea_absaddr);
181 ea->ea_flags = EA_PC_REL | EA_OFFSET;
183 &ea->ea_absaddr);
189 ea->ea_flags = EA_PC_REL | EA_INDEXED;
190 sig = decode_ea6(frame, insn, ea, modreg);
203 ea->ea_moffs = 0;
212 decode_ea6(struct frame *frame, struct instruction *insn, struct insn_ea *ea,
226 ea->ea_idxreg = (extword >> 12) & 0xf;
227 idx = frame->f_regs[ea->ea_idxreg];
245 ea->ea_basedisp = idx + basedisp;
246 ea->ea_outerdisp = 0;
248 __func__, ea->ea_idxreg, ea->ea_basedisp));
252 ea->ea_flags |= EA_BASE_SUPPRSS;
260 ea->ea_flags |= EA_MEM_INDIR;
267 ea->ea_basedisp = basedisp + idx;
268 ea->ea_outerdisp = outerdisp;
271 ea->ea_basedisp = basedisp;
272 ea->ea_outerdisp = outerdisp + idx;
275 ea->ea_basedisp = basedisp;
276 ea->ea_outerdisp = outerdisp;
286 ea->ea_idxreg, ea->ea_basedisp, ea->ea_outerdisp));
289 __func__, ea->ea_regnum, ea->ea_flags));
298 fpu_load_ea(struct frame *frame, struct instruction *insn, struct insn_ea *ea,
307 if (ea->ea_regnum & ~0xF)
316 step = (len == 1 && ea->ea_regnum == 15 /* sp */) ? 2 : len;
319 if (ea->ea_flags & EA_FRAME_EA) {
322 if (ea->ea_flags & (EA_PREDECR|EA_POSTINCR)) {
323 printf("%s: frame ea %08x w/r%d\n",
324 __func__, ea->ea_fea, ea->ea_regnum);
326 printf("%s: frame ea %08x\n", __func__, ea->ea_fea);
329 src = (char *)ea->ea_fea;
330 copyin(src + ea->ea_moffs, dst, len);
331 if (ea->ea_flags & EA_PREDECR) {
332 frame->f_regs[ea->ea_regnum] = ea->ea_fea;
333 ea->ea_fea -= step;
334 ea->ea_moffs = 0;
335 } else if (ea->ea_flags & EA_POSTINCR) {
336 ea->ea_fea += step;
337 frame->f_regs[ea->ea_regnum] = ea->ea_fea;
338 ea->ea_moffs = 0;
340 ea->ea_moffs += step;
345 if (ea->ea_flags & EA_DIRECT) {
351 if (ea->ea_moffs > 0) {
356 src = (char *)&frame->f_regs[ea->ea_regnum];
365 } else if (ea->ea_flags & EA_IMMED) {
367 ea->ea_immed[0], ea->ea_immed[1], ea->ea_immed[2], len));
368 src = (char *)&ea->ea_immed[0];
375 } else if (ea->ea_flags & EA_ABS) {
376 DPRINTF(("%s: abs addr %08x\n", __func__, ea->ea_absaddr));
377 src = (char *)ea->ea_absaddr;
380 if (ea->ea_flags & EA_PC_REL) {
392 (ea->ea_regnum >= 8) ? 'a' : 'd',
393 ea->ea_regnum & 7));
395 reg = &frame->f_regs[ea->ea_regnum];
397 if (ea->ea_flags & EA_PREDECR) {
401 ea->ea_moffs = 0;
409 sig = calc_ea(ea, src, &src);
413 copyin(src + ea->ea_moffs, dst, len);
416 if (ea->ea_flags & EA_POSTINCR) {
417 if (ea->ea_flags & EA_PC_REL) {
423 ea->ea_moffs = 0;
427 ea->ea_moffs += len;
439 fpu_store_ea(struct frame *frame, struct instruction *insn, struct insn_ea *ea,
448 if (ea->ea_regnum & ~0xf)
452 if (ea->ea_flags & (EA_IMMED|EA_PC_REL)) {
462 step = (len == 1 && ea->ea_regnum == 15 /* sp */) ? 2 : len;
464 if (ea->ea_flags & EA_FRAME_EA) {
467 if (ea->ea_flags & (EA_PREDECR|EA_POSTINCR)) {
468 printf("%s: frame ea %08x w/r%d\n",
469 __func__, ea->ea_fea, ea->ea_regnum);
471 printf("%s: frame ea %08x\n", __func__, ea->ea_fea);
474 dst = (char *)ea->ea_fea;
475 copyout(src, dst + ea->ea_moffs, len);
476 if (ea->ea_flags & EA_PREDECR) {
477 frame->f_regs[ea->ea_regnum] = ea->ea_fea;
478 ea->ea_fea -= step;
479 ea->ea_moffs = 0;
480 } else if (ea->ea_flags & EA_POSTINCR) {
481 ea->ea_fea += step;
482 frame->f_regs[ea->ea_regnum] = ea->ea_fea;
483 ea->ea_moffs = 0;
485 ea->ea_moffs += step;
488 } else if (ea->ea_flags & EA_ABS) {
489 DPRINTF(("%s: abs addr %08x\n", __func__, ea->ea_absaddr));
490 dst = (char *)ea->ea_absaddr;
491 copyout(src, dst + ea->ea_moffs, len);
492 ea->ea_moffs += len;
493 } else if (ea->ea_flags & EA_DIRECT) {
499 if (ea->ea_moffs > 0) {
504 dst = (char *)&frame->f_regs[ea->ea_regnum];
515 (ea->ea_regnum >= 8) ? 'a' : 'd', ea->ea_regnum & 7));
517 reg = &(frame->f_regs[ea->ea_regnum]);
520 if (ea->ea_flags & EA_PREDECR) {
524 ea->ea_moffs = 0;
528 sig = calc_ea(ea, (char *)*reg, &dst);
532 DPRINTF(("%s: dst addr=%p+%d\n", __func__, dst, ea->ea_moffs));
533 copyout(src, dst + ea->ea_moffs, len);
536 if (ea->ea_flags & EA_POSTINCR) {
538 ea->ea_moffs = 0;
542 ea->ea_moffs += len;
659 calc_ea(struct insn_ea *ea, char *ptr, char **eaddr)
668 if (ea->ea_flags & EA_OFFSET) {
670 DPRINTF(("%s: offset %d\n", __func__, ea->ea_offset));
671 ptr += ea->ea_offset;
672 } else if (ea->ea_flags & EA_INDEXED) {
675 if (ea->ea_flags & EA_BASE_SUPPRSS) {
677 ptr = (char *)ea->ea_basedisp;
679 ptr += ea->ea_basedisp;
682 if (ea->ea_flags & EA_MEM_INDIR) {
685 __func__, ea->ea_basedisp, ea->ea_outerdisp));
696 ptr = (char *)word + ea->ea_outerdisp;