Home | History | Annotate | Download | only in config

Lines Matching refs:fragP

1496 mep_prepare_relax_scan (fragS *fragP, offsetT *aim, relax_substateT this_state)
1498 symbolS *symbolP = fragP->fr_symbol;
1526 md_estimate_size_before_relax (fragS * fragP, segT segment)
1528 if (fragP->fr_subtype == 1)
1529 fragP->fr_subtype = insn_to_subtype (fragP->fr_cgen.insn->base->num);
1531 if (S_GET_SEGMENT (fragP->fr_symbol) != segment
1532 || S_IS_WEAK (fragP->fr_symbol)
1541 new_insn = subtype_mappings[fragP
1542 fragP->fr_subtype = insn_to_subtype (new_insn);
1549 switch (fragP->fr_cgen.insn->base->num)
1552 fragP->fr_subtype = insn_to_subtype
1553 (subtype_mappings[fragP->fr_subtype].insn_for_extern);
1556 fragP->fr_subtype ++;
1559 fragP->fr_subtype ++;
1564 if (fragP->fr_cgen.insn->base
1565 && fragP->fr_cgen.insn->base->num
1566 != subtype_mappings[fragP->fr_subtype].insn)
1568 int new_insn= subtype_mappings[fragP->fr_subtype].insn;
1571 fragP->fr_cgen.insn = (fragP->fr_cgen.insn
1572 - fragP->fr_cgen.insn->base->num
1583 return subtype_mappings[fragP->fr_subtype].growth;
1589 mep_relax_frag (segT segment, fragS *fragP, long stretch)
1591 long rv = relax_frag (segment, fragP, stretch);
1600 /* *fragP has been relaxed to its final size, and now needs to have
1604 fragP->fr_type == rs_machine_dependent.
1605 fragP->fr_subtype is the subtype of what the address relaxed to. */
1622 fragS *fragP)
1626 int where = fragP->fr_opcode - fragP->fr_literal;
1638 addend = target_address_for (fragP) - (fragP->fr_address + where);
1640 if (subtype_mappings[fragP->fr_subtype].insn == -1)
1643 fragP->fr_fix += subtype_mappings[fragP->fr_subtype].growth;
1644 switch (subtype_mappings[fragP->fr_subtype].insn_for_extern)
1647 fragP->fr_opcode[1^e] = ((fragP->fr_opcode[1^e] & 1) ^ 1) | 0x06;
1648 fragP->fr_opcode[2^e] = 0xd8;
1649 fragP->fr_opcode[3^e] = 0x08;
1650 fragP->fr_opcode[4^e] = 0;
1651 fragP->fr_opcode[5^e] = 0;
1655 if (fragP->fr_opcode[0^e] & 0x10)
1656 fragP->fr_opcode[1^e] ^= 0x01;
1658 fragP->fr_opcode[1^e] ^= 0x04;
1659 fragP->fr_opcode[2^e] = 0;
1660 fragP->fr_opcode[3^e] = 4;
1661 fragP->fr_opcode[4^e] = 0xd8;
1662 fragP->fr_opcode[5^e] = 0x08;
1663 fragP->fr_opcode[6^e] = 0;
1664 fragP->fr_opcode[7^e] = 0;
1670 fragP->fr_cgen.insn = (fragP->fr_cgen.insn
1671 - fragP->fr_cgen.insn->base->num
1676 switch (fragP->fr_cgen.insn->base->num)
1679 fragP->fr_opcode[0^e] = 0xb0 | ((addend >> 8) & 0x0f);
1680 fragP->fr_opcode[1^e] = 0x01 | (addend & 0xfe);
1686 fragP->fr_fix += 2;
1687 fragP->fr_opcode[0^e] = 0xd8 | ((addend >> 5) & 0x07);
1688 fragP->fr_opcode[1^e] = 0x09 | ((addend << 3) & 0xf0);
1689 fragP->fr_opcode[2^e] = 0x00 | ((addend >>16) & 0xff);
1690 fragP->fr_opcode[3^e] = 0x00 | ((addend >> 8) & 0xff);
1695 fragP->fr_opcode[0^e] = 0xb0 | ((addend >> 8) & 0x0f);
1696 fragP->fr_opcode[1^e] = 0x00 | (addend & 0xfe);
1707 fragP->fr_fix += 2;
1708 fragP->fr_opcode[0^e] = 0xe0;
1709 fragP->fr_opcode[1^e] = 0x01;
1710 fragP->fr_opcode[2^e] = 0x00 | ((addend >> 9) & 0xff);
1711 fragP->fr_opcode[3^e] = 0x00 | ((addend >> 1) & 0xff);
1718 addend = target_address_for (fragP);
1720 fragP->fr_fix += 2;
1721 fragP->fr_opcode[0^e] = 0xd8 | ((addend >> 5) & 0x07);
1722 fragP->fr_opcode[1^e] = 0x08 | ((addend << 3) & 0xf0);
1723 fragP->fr_opcode[2^e] = 0x00 | ((addend >>16) & 0xff);
1724 fragP->fr_opcode[3^e] = 0x00 | ((addend >> 8) & 0xff);
1731 fragP->fr_opcode[1^e] = bit | (addend & 0xfe);
1738 if (subtype_mappings[fragP->fr_subtype].growth)
1741 fragP->fr_fix += subtype_mappings[fragP->fr_subtype].growth;
1742 rn = fragP->fr_opcode[0^e] & 0x0f;
1743 fragP->fr_opcode[0^e] = 0xe0 | rn;
1744 fragP->fr_opcode[1^e] = bit;
1746 fragP->fr_opcode[2^e] = 0x00 | ((addend >> 9) & 0xff);
1747 fragP->fr_opcode[3^e] = 0x00 | ((addend >> 1) & 0xff);
1758 fragP->fr_opcode[2^e] = (addend >> 9) & 0xff;
1759 fragP->fr_opcode[3^e] = (addend >> 1) & 0xff;
1767 if (S_GET_SEGMENT (fragP->fr_symbol) != seg
1768 || S_IS_WEAK (fragP->fr_symbol)
1771 gas_assert (fragP->fr_cgen.insn != 0);
1772 gas_cgen_record_fixup (fragP,
1774 fragP->fr_cgen.insn,
1775 (fragP->fr_fix - where) * 8,
1778 fragP->fr_cgen.opinfo,
1779 fragP->fr_symbol, fragP->fr_offset);