Lines Matching full:fixp
256 fixS *fixP;
262 fixP = gas_cgen_record_fixup_exp (frag, where, insn, length,
271 fixP->fx_r_type = BFD_RELOC_XSTORMY16_FPTR16;
272 fixP->fx_where += 2;
276 return fixP;
336 md_pcrel_from_section (fixS * fixP, segT sec)
338 if ((fixP->fx_addsy != (symbolS *) NULL
339 && (! S_IS_DEFINED (fixP->fx_addsy)
340 || S_GET_SEGMENT (fixP->fx_addsy) != sec))
341 || xstormy16_force_relocation (fixP))
348 return fixP->fx_frag->fr_address + fixP->fx_where;
351 /* Return the bfd reloc type for OPERAND of INSN at fixup FIXP.
353 *FIXP may be modified if desired. */
358 fixS * fixP)
370 fixP->fx_where += 2;
375 return fixP->fx_pcrel ? BFD_RELOC_8_PCREL : BFD_RELOC_8;
379 fixP->fx_where += 2;
380 if (fixP->fx_cgen.opinfo && fixP->fx_cgen.opinfo != BFD_RELOC_NONE)
381 return fixP->fx_cgen.opinfo;
382 return fixP->fx_pcrel ? BFD_RELOC_16_PCREL : BFD_RELOC_16;
388 fixP->fx_addnumber -= 2;
390 fixP->fx_addnumber -= 2;
391 fixP->fx_pcrel = 1;
395 fixP->fx_where += 2;
398 fixP->fx_addnumber -= 2;
399 fixP->fx_pcrel = 1;
424 xstormy16_fix_adjustable (fixS * fixP)
427 if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
428 || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
431 if (fixP->fx_r_type == BFD_RELOC_XSTORMY16_FPTR16)
441 xstormy16_md_apply_fix (fixS * fixP,
445 char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
454 fixP->fx_addnumber = 0;
461 if (fixP->fx_pcrel)
462 switch (fixP->fx_r_type)
465 fixP->fx_r_type = BFD_RELOC_8_PCREL;
468 fixP->fx_r_type = BFD_RELOC_16_PCREL;
471 fixP->fx_r_type = BFD_RELOC_32_PCREL;
474 fixP->fx_r_type = BFD_RELOC_64_PCREL;
480 if (fixP->fx_addsy == (symbolS *) NULL)
481 fixP->fx_done = 1;
484 if (fixP->fx_subsy != (symbolS *) NULL)
485 as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
487 if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
489 int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
494 const CGEN_INSN *insn = fixP->fx_cgen.insn;
498 if (fixP->fx_done)
522 as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg);
525 if (fixP->fx_done)
533 reloc_type = md_cgen_lookup_reloc (insn, operand, fixP);
535 fixP->fx_r_type = reloc_type;
538 as_bad_where (fixP->fx_file, fixP->fx_line,
540 fixP->fx_done = 1;
544 else if (fixP->fx_done)
548 switch (fixP->fx_r_type)
563 as_bad_where (fixP->fx_file, fixP->fx_line,
565 fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type));
582 if (! fixP->fx_done)
588 fixP->fx_addnumber += value;