FreeBSD/contrib/binutils/gas/config/tc-arm.c
/* Parse an unwind_save directive.
   If the argument is non-zero, this is a .vsave directive.  */
Parse an unwind_save directive.
If the argument is non-zero, this is a .vsave directive.
Parse an unwind_save directive . If the argument is non - zero this is a . vsave directive .
static void
s_arm_unwind_save (int arch_v6)
{
  char *peek;
  struct reg_entry *reg;
  bfd_boolean had_brace = FALSE;
  peek = input_line_pointer;
  if (*peek == '{')
    {
      had_brace = TRUE;
      peek++;
    }
  reg = arm_reg_parse_multi (&peek);
  if (!reg)
    {
      as_bad (_("register expected"));
      ignore_rest_of_line ();
      return;
    }
  switch (reg->type)
    {
    case REG_TYPE_FN:
      if (had_brace)
	{
	  as_bad (_("FPA .unwind_save does not take a register list"));
	  ignore_rest_of_line ();
	  return;
	}
      s_arm_unwind_save_fpa (reg->number);
      return;
    case REG_TYPE_RN:	  s_arm_unwind_save_core ();   return;
    case REG_TYPE_VFD:
      if (arch_v6)
        s_arm_unwind_save_vfp_armv6 ();
      else
        s_arm_unwind_save_vfp ();
      return;
    case REG_TYPE_MMXWR:  s_arm_unwind_save_mmxwr ();  return;
    case REG_TYPE_MMXWCG: s_arm_unwind_save_mmxwcg (); return;
    default:
      as_bad (_(".unwind_save does not support this kind of register"));
      ignore_rest_of_line ();
    }
}
static void s_arm_unwind_save ( int arch_v6 ) { char * peek ; struct reg_entry * reg ; bfd_boolean had_brace = FALSE ; peek = input_line_pointer ; if ( * peek == ' ' ) { had_brace = TRUE ; peek ++ ; } reg = arm_reg_parse_multi ( & peek ) ; if ( ! reg ) { as_bad ( _ ( " " ) ) ; ignore_rest_of_line ( ) ; return ; } switch ( reg -> type ) { case REG_TYPE_FN : if ( had_brace ) { as_bad ( _ ( " " ) ) ; ignore_rest_of_line ( ) ; return ; } s_arm_unwind_save_fpa ( reg -> number ) ; return ; case REG_TYPE_RN : s_arm_unwind_save_core ( ) ; return ; case REG_TYPE_VFD : if ( arch_v6 ) s_arm_unwind_save_vfp_armv6 ( ) ; else s_arm_unwind_save_vfp ( ) ; return ; case REG_TYPE_MMXWR : s_arm_unwind_save_mmxwr ( ) ; return ; case REG_TYPE_MMXWCG : s_arm_unwind_save_mmxwcg ( ) ; return ; default : as_bad ( _ ( " " ) ) ; ignore_rest_of_line ( ) ; } }
Parse an unwind_save directive.
Parse an unwind_save directive .
/* Figure out what sort of save we have.  */