Lines Matching refs:fragP
3868 m68hc11_relax_frag (segT seg ATTRIBUTE_UNUSED, fragS *fragP, in m68hc11_relax_frag() argument
3883 switch (fragP->fr_subtype) in m68hc11_relax_frag()
3894 if (fragP->fr_symbol == NULL in m68hc11_relax_frag()
3895 || S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) in m68hc11_relax_frag()
3897 __FUNCTION__, (long) fragP->fr_symbol); in m68hc11_relax_frag()
3898 symbolP = fragP->fr_symbol; in m68hc11_relax_frag()
3907 __FUNCTION__, fragP->fr_subtype); in m68hc11_relax_frag()
3914 this_state = fragP->fr_subtype; in m68hc11_relax_frag()
3948 fragP->fr_subtype = this_state; in m68hc11_relax_frag()
3954 fragS *fragP) in md_convert_frag() argument
3958 char *buffer_address = fragP->fr_literal; in md_convert_frag()
3961 int object_address = fragP->fr_fix + fragP->fr_address; in md_convert_frag()
3963 buffer_address += fragP->fr_fix; in md_convert_frag()
3966 value = S_GET_VALUE (fragP->fr_symbol); in md_convert_frag()
3967 disp = (value + fragP->fr_offset) - object_address; in md_convert_frag()
3969 switch (fragP->fr_subtype) in md_convert_frag()
3972 fragP->fr_opcode[1] = disp; in md_convert_frag()
3977 gas_assert (IS_OPCODE (fragP->fr_opcode[0], M6811_BSR) in md_convert_frag()
3978 || IS_OPCODE (fragP->fr_opcode[0], M6811_BRA) in md_convert_frag()
3979 || IS_OPCODE (fragP->fr_opcode[0], M6812_BSR)); in md_convert_frag()
3981 fragP->fr_opcode[0] = convert_branch (fragP->fr_opcode[0]); in md_convert_frag()
3983 fix_new (fragP, fragP->fr_fix - 1, 2, in md_convert_frag()
3984 fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); in md_convert_frag()
3985 fragP->fr_fix += 1; in md_convert_frag()
3990 fragP->fr_opcode[1] = disp; in md_convert_frag()
3995 fragP->fr_opcode[0] ^= 1; in md_convert_frag()
3996 fragP->fr_opcode[1] = 3; /* Branch offset. */ in md_convert_frag()
3998 fix_new (fragP, fragP->fr_fix + 1, 2, in md_convert_frag()
3999 fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); in md_convert_frag()
4000 fragP->fr_fix += 3; in md_convert_frag()
4005 fragP->fr_opcode[1] = fragP->fr_opcode[0]; in md_convert_frag()
4006 fragP->fr_opcode[0] = M6811_OPCODE_PAGE2; in md_convert_frag()
4008 fix_new (fragP, fragP->fr_fix, 2, in md_convert_frag()
4009 fragP->fr_symbol, fragP->fr_offset, 1, in md_convert_frag()
4011 fragP->fr_fix += 2; in md_convert_frag()
4015 if (fragP->fr_symbol != 0 in md_convert_frag()
4016 && S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) in md_convert_frag()
4021 fragP->fr_opcode[0] = fragP->fr_opcode[0] << 6; in md_convert_frag()
4022 fragP->fr_opcode[0] |= value & 0x1f; in md_convert_frag()
4028 if (fragP->fr_symbol != 0 in md_convert_frag()
4029 && S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) in md_convert_frag()
4034 fragP->fr_opcode[0] = (fragP->fr_opcode[0] << 3); in md_convert_frag()
4035 fragP->fr_opcode[0] |= 0xE0; in md_convert_frag()
4036 fragP->fr_opcode[0] |= (value >> 8) & 1; in md_convert_frag()
4037 fragP->fr_opcode[1] = value; in md_convert_frag()
4038 fragP->fr_fix += 1; in md_convert_frag()
4043 fragP->fr_opcode[0] = (fragP->fr_opcode[0] << 3); in md_convert_frag()
4044 fragP->fr_opcode[0] |= 0xe2; in md_convert_frag()
4045 if ((fragP->fr_opcode[0] & 0x0ff) == 0x0fa in md_convert_frag()
4046 && fragP->fr_symbol != 0 in md_convert_frag()
4047 && S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) in md_convert_frag()
4049 fix_new (fragP, fragP->fr_fix, 2, in md_convert_frag()
4050 fragP->fr_symbol, fragP->fr_offset, in md_convert_frag()
4055 fix_new (fragP, fragP->fr_fix, 2, in md_convert_frag()
4056 fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); in md_convert_frag()
4058 fragP->fr_fix += 2; in md_convert_frag()
4063 fragP->fr_opcode[0] |= 0x10; in md_convert_frag()
4065 fragP->fr_opcode[1] = disp & 0x0FF; in md_convert_frag()
4070 fragP->fr_opcode[0] ^= 0x20; in md_convert_frag()
4071 fragP->fr_opcode[1] = 3; /* Branch offset. */ in md_convert_frag()
4073 fix_new (fragP, fragP->fr_fix + 1, 2, in md_convert_frag()
4074 fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); in md_convert_frag()
4075 fragP->fr_fix += 3; in md_convert_frag()
4096 md_estimate_size_before_relax (fragS *fragP, asection *segment) in md_estimate_size_before_relax() argument
4098 if (RELAX_LENGTH (fragP->fr_subtype) == STATE_UNDF) in md_estimate_size_before_relax()
4100 if (S_GET_SEGMENT (fragP->fr_symbol) != segment in md_estimate_size_before_relax()
4101 || !relaxable_symbol (fragP->fr_symbol) in md_estimate_size_before_relax()
4103 && RELAX_STATE (fragP->fr_subtype) == STATE_INDEXED_OFFSET)) in md_estimate_size_before_relax()
4109 old_fr_fix = fragP->fr_fix; in md_estimate_size_before_relax()
4110 buffer_address = fragP->fr_fix + fragP->fr_literal; in md_estimate_size_before_relax()
4112 switch (RELAX_STATE (fragP->fr_subtype)) in md_estimate_size_before_relax()
4117 gas_assert (IS_OPCODE (fragP->fr_opcode[0], M6811_BSR) in md_estimate_size_before_relax()
4118 || IS_OPCODE (fragP->fr_opcode[0], M6811_BRA) in md_estimate_size_before_relax()
4119 || IS_OPCODE (fragP->fr_opcode[0], M6812_BSR)); in md_estimate_size_before_relax()
4122 as_bad_where (fragP->fr_file, fragP->fr_line, in md_estimate_size_before_relax()
4129 fragP->fr_opcode[0] = convert_branch (fragP->fr_opcode[0]); in md_estimate_size_before_relax()
4131 fix_new (fragP, fragP->fr_fix - 1, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4132 fragP->fr_offset, 0, BFD_RELOC_16); in md_estimate_size_before_relax()
4133 fragP->fr_fix++; in md_estimate_size_before_relax()
4139 fragP->fr_opcode[0] ^= 1; /* Reverse sense of branch. */ in md_estimate_size_before_relax()
4140 fragP->fr_opcode[1] = 3; /* Skip next jmp insn (3 bytes). */ in md_estimate_size_before_relax()
4146 fragP->fr_fix++; in md_estimate_size_before_relax()
4147 fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4148 fragP->fr_offset, 0, BFD_RELOC_16); in md_estimate_size_before_relax()
4149 fragP->fr_fix += 2; in md_estimate_size_before_relax()
4155 if (fragP->fr_symbol in md_estimate_size_before_relax()
4156 && S_GET_SEGMENT (fragP->fr_symbol) == absolute_section) in md_estimate_size_before_relax()
4158 fragP->fr_subtype = ENCODE_RELAX (STATE_INDEXED_OFFSET, in md_estimate_size_before_relax()
4161 return md_relax_table[fragP->fr_subtype].rlx_length; in md_estimate_size_before_relax()
4166 fragP->fr_opcode[0] = fragP->fr_opcode[0] << 3; in md_estimate_size_before_relax()
4167 fragP->fr_opcode[0] |= 0xe2; in md_estimate_size_before_relax()
4168 fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4169 fragP->fr_offset, 0, BFD_RELOC_16); in md_estimate_size_before_relax()
4170 fragP->fr_fix += 2; in md_estimate_size_before_relax()
4177 if (fragP->fr_symbol in md_estimate_size_before_relax()
4178 && S_GET_SEGMENT (fragP->fr_symbol) == absolute_section) in md_estimate_size_before_relax()
4180 fragP->fr_subtype = ENCODE_RELAX (STATE_INDEXED_PCREL, in md_estimate_size_before_relax()
4183 return md_relax_table[fragP->fr_subtype].rlx_length; in md_estimate_size_before_relax()
4187 fragP->fr_opcode[0] = fragP->fr_opcode[0] << 3; in md_estimate_size_before_relax()
4188 fragP->fr_opcode[0] |= 0xe2; in md_estimate_size_before_relax()
4189 fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4190 fragP->fr_offset, 1, BFD_RELOC_16_PCREL); in md_estimate_size_before_relax()
4191 fragP->fr_fix += 2; in md_estimate_size_before_relax()
4198 fragP->fr_opcode[0] ^= 0x20; /* Reverse sense of branch. */ in md_estimate_size_before_relax()
4199 fragP->fr_opcode[1] = 3; /* Skip next jmp insn (3 bytes). */ in md_estimate_size_before_relax()
4205 fragP->fr_fix++; in md_estimate_size_before_relax()
4206 fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4207 fragP->fr_offset, 0, BFD_RELOC_16); in md_estimate_size_before_relax()
4208 fragP->fr_fix += 2; in md_estimate_size_before_relax()
4215 fragP->fr_opcode[1] = fragP->fr_opcode[0]; in md_estimate_size_before_relax()
4216 fragP->fr_opcode[0] = M6811_OPCODE_PAGE2; in md_estimate_size_before_relax()
4218 fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, in md_estimate_size_before_relax()
4219 fragP->fr_offset, 1, BFD_RELOC_16_PCREL); in md_estimate_size_before_relax()
4220 fragP->fr_fix += 2; in md_estimate_size_before_relax()
4224 as_fatal (_("Subtype %d is not recognized."), fragP->fr_subtype); in md_estimate_size_before_relax()
4226 frag_wane (fragP); in md_estimate_size_before_relax()
4229 return fragP->fr_fix - old_fr_fix; in md_estimate_size_before_relax()
4233 switch (RELAX_STATE (fragP->fr_subtype)) in md_estimate_size_before_relax()
4237 gas_assert (IS_OPCODE (fragP->fr_opcode[0], M6811_BSR) in md_estimate_size_before_relax()
4238 || IS_OPCODE (fragP->fr_opcode[0], M6811_BRA) in md_estimate_size_before_relax()
4239 || IS_OPCODE (fragP->fr_opcode[0], M6812_BSR)); in md_estimate_size_before_relax()
4241 fragP->fr_subtype = ENCODE_RELAX (STATE_PC_RELATIVE, STATE_BYTE); in md_estimate_size_before_relax()
4247 fragP->fr_subtype = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, in md_estimate_size_before_relax()
4254 fragP->fr_subtype = ENCODE_RELAX (STATE_INDEXED_OFFSET, in md_estimate_size_before_relax()
4261 fragP->fr_subtype = ENCODE_RELAX (STATE_INDEXED_PCREL, in md_estimate_size_before_relax()
4268 fragP->fr_subtype = ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_BYTE); in md_estimate_size_before_relax()
4274 fragP->fr_subtype = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, in md_estimate_size_before_relax()
4280 if (fragP->fr_subtype >= sizeof (md_relax_table) / sizeof (md_relax_table[0])) in md_estimate_size_before_relax()
4281 as_fatal (_("Subtype %d is not recognized."), fragP->fr_subtype); in md_estimate_size_before_relax()
4284 return md_relax_table[fragP->fr_subtype].rlx_length; in md_estimate_size_before_relax()