diff mbox series

hw/avr/atmega.c: use the avr51 cpu for atmega1280

Message ID 1619637319-22299-1-git-send-email-frederic.konrad@adacore.com (mailing list archive)
State New, archived
Headers show
Series hw/avr/atmega.c: use the avr51 cpu for atmega1280 | expand

Commit Message

Frederic Konrad April 28, 2021, 7:15 p.m. UTC
According to the as documentation:
 (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)

"Instruction set avr51 is for the enhanced AVR core with exactly 128K
 program memory space (MCU types: atmega128, atmega128a, atmega1280,
 atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
 atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."

But when compiling a program for atmega1280 or avr51 and trying to execute
it:

$ cat > test.S << EOF
> loop:
>     rjmp loop
> EOF
$ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
$ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
                  -bios test.elf
qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with 'avr6' CPU
qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU

So this fixes the atmega1280 class to use an avr51 CPU.

Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
---
 hw/avr/atmega.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé April 28, 2021, 7:17 p.m. UTC | #1
Cc'ing Joaquín.

On 4/28/21 9:15 PM, Frederic Konrad wrote:
> According to the as documentation:
>  (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
> 
> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>  program memory space (MCU types: atmega128, atmega128a, atmega1280,
>  atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>  atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
> 
> But when compiling a program for atmega1280 or avr51 and trying to execute
> it:
> 
> $ cat > test.S << EOF
>> loop:
>>     rjmp loop
>> EOF
> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>                   -bios test.elf
> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with 'avr6' CPU
> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
> 
> So this fixes the atmega1280 class to use an avr51 CPU.
> 
> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
> ---
>  hw/avr/atmega.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
> index 44c6afebbb..e3ea5702f5 100644
> --- a/hw/avr/atmega.c
> +++ b/hw/avr/atmega.c
> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass *oc, void *data)
>  {
>      AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>  
> -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>      amc->flash_size = 128 * KiB;
>      amc->eeprom_size = 4 * KiB;
>      amc->sram_size = 8 * KiB;
>
Joaquin de Andres April 30, 2021, 10:27 a.m. UTC | #2
On 4/28/21 9:17 PM, Philippe Mathieu-Daudé wrote:
> Cc'ing Joaquín.
>
> On 4/28/21 9:15 PM, Frederic Konrad wrote:
>> According to the as documentation:
>>  (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
>>
>> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>>  program memory space (MCU types: atmega128, atmega128a, atmega1280,
>>  atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>>  atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
>>
>> But when compiling a program for atmega1280 or avr51 and trying to execute
>> it:
>>
>> $ cat > test.S << EOF
>>> loop:
>>>     rjmp loop
>>> EOF
>> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
>> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>>                   -bios test.elf
>> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with 'avr6' CPU
>> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
>>
>> So this fixes the atmega1280 class to use an avr51 CPU.
>>
>> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
>> ---
>>  hw/avr/atmega.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
>> index 44c6afebbb..e3ea5702f5 100644
>> --- a/hw/avr/atmega.c
>> +++ b/hw/avr/atmega.c
>> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass *oc, void *data)
>>  {
>>      AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>>  
>> -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
>> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>>      amc->flash_size = 128 * KiB;
>>      amc->eeprom_size = 4 * KiB;
>>      amc->sram_size = 8 * KiB;
>>
>
Good catch!
Frederic Konrad May 5, 2021, 1:33 p.m. UTC | #3
Le 4/30/21 à 12:27 PM, Joaquin de Andres a écrit :
> On 4/28/21 9:17 PM, Philippe Mathieu-Daudé wrote:
>> Cc'ing Joaquín.
>>
>> On 4/28/21 9:15 PM, Frederic Konrad wrote:
>>> According to the as documentation:
>>>   (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
>>>
>>> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>>>   program memory space (MCU types: atmega128, atmega128a, atmega1280,
>>>   atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>>>   atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
>>>
>>> But when compiling a program for atmega1280 or avr51 and trying to execute
>>> it:
>>>
>>> $ cat > test.S << EOF
>>>> loop:
>>>>      rjmp loop
>>>> EOF
>>> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
>>> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>>>                    -bios test.elf
>>> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with 'avr6' CPU
>>> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
>>>
>>> So this fixes the atmega1280 class to use an avr51 CPU.
>>>
>>> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
>>> ---
>>>   hw/avr/atmega.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
>>> index 44c6afebbb..e3ea5702f5 100644
>>> --- a/hw/avr/atmega.c
>>> +++ b/hw/avr/atmega.c
>>> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass *oc, void *data)
>>>   {
>>>       AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>>>   
>>> -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
>>> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>>>       amc->flash_size = 128 * KiB;
>>>       amc->eeprom_size = 4 * KiB;
>>>       amc->sram_size = 8 * KiB;
>>>
>>
> Good catch!
> 

Thanks, does that count as a reviewed-by :)?
Joaquin de Andres May 5, 2021, 2 p.m. UTC | #4
On 5/5/21 3:33 PM, Fred Konrad wrote:
>
>
> Le 4/30/21 à 12:27 PM, Joaquin de Andres a écrit :
>> On 4/28/21 9:17 PM, Philippe Mathieu-Daudé wrote:
>>> Cc'ing Joaquín.
>>>
>>> On 4/28/21 9:15 PM, Frederic Konrad wrote:
>>>> According to the as documentation:
>>>>   (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
>>>>
>>>> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>>>>   program memory space (MCU types: atmega128, atmega128a, atmega1280,
>>>>   atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>>>>   atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
>>>>
>>>> But when compiling a program for atmega1280 or avr51 and trying to
>>>> execute
>>>> it:
>>>>
>>>> $ cat > test.S << EOF
>>>>> loop:
>>>>>      rjmp loop
>>>>> EOF
>>>> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
>>>> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>>>>                    -bios test.elf
>>>> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with
>>>> 'avr6' CPU
>>>> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
>>>>
>>>> So this fixes the atmega1280 class to use an avr51 CPU.
>>>>
>>>> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
>>>> ---
>>>>   hw/avr/atmega.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
>>>> index 44c6afebbb..e3ea5702f5 100644
>>>> --- a/hw/avr/atmega.c
>>>> +++ b/hw/avr/atmega.c
>>>> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass
>>>> *oc, void *data)
>>>>   {
>>>>       AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>>>>   -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
>>>> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>>>>       amc->flash_size = 128 * KiB;
>>>>       amc->eeprom_size = 4 * KiB;
>>>>       amc->sram_size = 8 * KiB;
>>>>
>>>
>> Good catch!
>>
>
> Thanks, does that count as a reviewed-by :)?
>
>
Yes! sorry.


Reviewed-by: Joaquin de Andres <me@xcancerberox.com.ar>
Philippe Mathieu-Daudé May 13, 2021, 5:04 p.m. UTC | #5
Cc'ing qemu-trivial@

On 5/5/21 4:00 PM, Joaquin de Andres wrote:
> On 5/5/21 3:33 PM, Fred Konrad wrote:
>>
>>
>> Le 4/30/21 à 12:27 PM, Joaquin de Andres a écrit :
>>> On 4/28/21 9:17 PM, Philippe Mathieu-Daudé wrote:
>>>> Cc'ing Joaquín.
>>>>
>>>> On 4/28/21 9:15 PM, Frederic Konrad wrote:
>>>>> According to the as documentation:
>>>>>   (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
>>>>>
>>>>> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>>>>>   program memory space (MCU types: atmega128, atmega128a, atmega1280,
>>>>>   atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>>>>>   atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
>>>>>
>>>>> But when compiling a program for atmega1280 or avr51 and trying to
>>>>> execute
>>>>> it:
>>>>>
>>>>> $ cat > test.S << EOF
>>>>>> loop:
>>>>>>      rjmp loop
>>>>>> EOF
>>>>> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
>>>>> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>>>>>                    -bios test.elf
>>>>> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with
>>>>> 'avr6' CPU
>>>>> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
>>>>>
>>>>> So this fixes the atmega1280 class to use an avr51 CPU.
>>>>>
>>>>> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
>>>>> ---
>>>>>   hw/avr/atmega.c | 2 +-
>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
>>>>> index 44c6afebbb..e3ea5702f5 100644
>>>>> --- a/hw/avr/atmega.c
>>>>> +++ b/hw/avr/atmega.c
>>>>> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass
>>>>> *oc, void *data)
>>>>>   {
>>>>>       AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>>>>>   -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
>>>>> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>>>>>       amc->flash_size = 128 * KiB;
>>>>>       amc->eeprom_size = 4 * KiB;
>>>>>       amc->sram_size = 8 * KiB;
>>>>>
>>>>
>>> Good catch!
>>>
>>
>> Thanks, does that count as a reviewed-by :)?
>>
>>
> Yes! sorry.
> 
> 
> Reviewed-by: Joaquin de Andres <me@xcancerberox.com.ar>
>
Laurent Vivier May 13, 2021, 5:13 p.m. UTC | #6
Le 13/05/2021 à 19:04, Philippe Mathieu-Daudé a écrit :
> Cc'ing qemu-trivial@

Applied to my trivial-patches branch.

Thanks,
Laurent

> On 5/5/21 4:00 PM, Joaquin de Andres wrote:
>> On 5/5/21 3:33 PM, Fred Konrad wrote:
>>>
>>>
>>> Le 4/30/21 à 12:27 PM, Joaquin de Andres a écrit :
>>>> On 4/28/21 9:17 PM, Philippe Mathieu-Daudé wrote:
>>>>> Cc'ing Joaquín.
>>>>>
>>>>> On 4/28/21 9:15 PM, Frederic Konrad wrote:
>>>>>> According to the as documentation:
>>>>>>   (https://sourceware.org/binutils/docs-2.36/as/AVR-Options.html)
>>>>>>
>>>>>> "Instruction set avr51 is for the enhanced AVR core with exactly 128K
>>>>>>   program memory space (MCU types: atmega128, atmega128a, atmega1280,
>>>>>>   atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
>>>>>>   atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000)."
>>>>>>
>>>>>> But when compiling a program for atmega1280 or avr51 and trying to
>>>>>> execute
>>>>>> it:
>>>>>>
>>>>>> $ cat > test.S << EOF
>>>>>>> loop:
>>>>>>>      rjmp loop
>>>>>>> EOF
>>>>>> $ avr-gcc -nostdlib -nostartfiles -mmcu=atmega1280 test.S -o test.elf
>>>>>> $ qemu-system-avr -serial mon:stdio -nographic -no-reboot -M mega \
>>>>>>                    -bios test.elf
>>>>>> qemu-system-avr: Current machine: Arduino Mega (ATmega1280) with
>>>>>> 'avr6' CPU
>>>>>> qemu-system-avr: ELF image 'test.elf' is for 'avr51' CPU
>>>>>>
>>>>>> So this fixes the atmega1280 class to use an avr51 CPU.
>>>>>>
>>>>>> Signed-off-by: Frederic Konrad <frederic.konrad@adacore.com>
>>>>>> ---
>>>>>>   hw/avr/atmega.c | 2 +-
>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
>>>>>> index 44c6afebbb..e3ea5702f5 100644
>>>>>> --- a/hw/avr/atmega.c
>>>>>> +++ b/hw/avr/atmega.c
>>>>>> @@ -402,7 +402,7 @@ static void atmega1280_class_init(ObjectClass
>>>>>> *oc, void *data)
>>>>>>   {
>>>>>>       AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
>>>>>>   -    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
>>>>>> +    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
>>>>>>       amc->flash_size = 128 * KiB;
>>>>>>       amc->eeprom_size = 4 * KiB;
>>>>>>       amc->sram_size = 8 * KiB;
>>>>>>
>>>>>
>>>> Good catch!
>>>>
>>>
>>> Thanks, does that count as a reviewed-by :)?
>>>
>>>
>> Yes! sorry.
>>
>>
>> Reviewed-by: Joaquin de Andres <me@xcancerberox.com.ar>
>>
>
diff mbox series

Patch

diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
index 44c6afebbb..e3ea5702f5 100644
--- a/hw/avr/atmega.c
+++ b/hw/avr/atmega.c
@@ -402,7 +402,7 @@  static void atmega1280_class_init(ObjectClass *oc, void *data)
 {
     AtmegaMcuClass *amc = ATMEGA_MCU_CLASS(oc);
 
-    amc->cpu_type = AVR_CPU_TYPE_NAME("avr6");
+    amc->cpu_type = AVR_CPU_TYPE_NAME("avr51");
     amc->flash_size = 128 * KiB;
     amc->eeprom_size = 4 * KiB;
     amc->sram_size = 8 * KiB;