const char *
avr_device_to_arch (int argc, const char **argv)
{
  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);

  return concat ("-m ", avr_current_arch->arch_name, NULL);
}
const char *
avr_device_to_startfiles (int argc, const char **argv)
{
  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);

  return concat ("crt", avr_current_device->library_name, ".o%s", NULL);
}
const char *
avr_device_to_devicelib (int argc, const char **argv)
{
  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);

  return concat ("-l", avr_current_device->library_name, NULL);
}
Exemple #4
0
const char*
avr_device_to_as (int argc, const char **argv)
{
  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);

  return concat ("-mmcu=", avr_current_arch->arch_name,
    avr_current_device->dev_attribute & AVR_ERRATA_SKIP ? "" : " -mno-skip-bug",
    avr_current_device->dev_attribute & AVR_ISA_RMW ? " -mrmw" : "", NULL);
}
Exemple #5
0
const char*
avr_device_to_sp8 (int argc, const char **argv)
{
    if (0 == argc)
        return NULL;

    avr_set_current_device (argv[0]);

    /* Leave "avr2" and "avr25" alone.  These two architectures are
       the only ones that mix devices with 8-bit SP and 16-bit SP.
       -msp8 is set by mmultilib machinery.  */

    if (avr_current_device->macro == NULL
            && (avr_current_device->arch == ARCH_AVR2
                || avr_current_device->arch == ARCH_AVR25))
        return "";

    return avr_current_device->short_sp
           ? "-msp8"
           : "%<msp8";
}
Exemple #6
0
const char *
avr_device_to_text_start (int argc, const char **argv)
{
  unsigned long text_section_start;
  char text_section_start_str[16];

  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);

  if (avr_current_device->text_section_start == 0x0)
    return NULL;

  text_section_start = avr_current_device->text_section_start;

  snprintf (text_section_start_str, sizeof(text_section_start_str) - 1,
            "0x%lX", text_section_start);

  return concat ("-Ttext ", text_section_start_str, NULL);
}
const char *
avr_device_to_data_start (int argc, const char **argv)
{
  unsigned long data_section_start;
  char data_section_start_str[16];

  if (0 == argc)
    return NULL;

  avr_set_current_device (argv[0]);
  
  if (avr_current_device->data_section_start 
      == avr_current_arch->default_data_section_start)
    return NULL;
    
  data_section_start = 0x800000 + avr_current_device->data_section_start;
  
  snprintf (data_section_start_str, sizeof(data_section_start_str) - 1,
            "0x%lX", data_section_start);
  
  return concat ("-Tdata ", data_section_start_str, NULL);    
}