aboutsummaryrefslogtreecommitdiff
path: root/hw/avr/atmega.c
diff options
context:
space:
mode:
authorGihun Nam <gihun.nam@outlook.com>2023-11-27 11:54:20 +0900
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2023-11-28 14:27:12 +0100
commit235948bf53860a1e2df5134eae7b0a30a971a124 (patch)
treeabc0a352dbd85063b3a0abae1b99b1198e513949 /hw/avr/atmega.c
parent0ed083a1bcdbdfe77ded69b3524ad22d120fae03 (diff)
hw/avr/atmega: Fix wrong initial value of stack pointer
The current implementation initializes the stack pointer of AVR devices to 0. Although older AVR devices used to be like that, newer ones set it to RAMEND. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1525 Signed-off-by: Gihun Nam <gihun.nam@outlook.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <PH0P222MB0010877445B594724D40C924DEBDA@PH0P222MB0010.NAMP222.PROD.OUTLOOK.COM> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Diffstat (limited to 'hw/avr/atmega.c')
-rw-r--r--hw/avr/atmega.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
index a34803e642..31c8992d75 100644
--- a/hw/avr/atmega.c
+++ b/hw/avr/atmega.c
@@ -233,6 +233,10 @@ static void atmega_realize(DeviceState *dev, Error **errp)
/* CPU */
object_initialize_child(OBJECT(dev), "cpu", &s->cpu, mc->cpu_type);
+
+ object_property_set_uint(OBJECT(&s->cpu), "init-sp",
+ mc->io_size + mc->sram_size - 1, &error_abort);
+
qdev_realize(DEVICE(&s->cpu), NULL, &error_abort);
cpudev = DEVICE(&s->cpu);