Skip to content

Commit a482af9

Browse files
committed
set PC to entrypoint correctly in elf loaders
1 parent 5889376 commit a482af9

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

sim/aviron/src/main.zig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ pub fn main() !u8 {
109109
.elf => {
110110
var header = try std.elf.Header.read(&reader.interface);
111111

112+
// Set PC to entry point (convert byte address to word address for AVR)
113+
cpu.pc = @intCast(header.entry / 2);
114+
112115
var pheaders = header.iterateProgramHeaders(&reader);
113116
while (try pheaders.next()) |phdr| {
114117
if (phdr.p_type != std.elf.PT_LOAD)

sim/aviron/src/testrunner.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ fn run_test(
127127

128128
var header = try std.elf.Header.read(&reader.interface);
129129

130+
// Set PC to entry point (convert byte address to word address for AVR)
131+
cpu.pc = @intCast(header.entry / 2);
132+
130133
var pheaders = header.iterateProgramHeaders(&reader);
131134
while (try pheaders.next()) |phdr| {
132135
if (phdr.p_type != std.elf.PT_LOAD)
@@ -147,9 +150,6 @@ fn run_test(
147150
try reader.interface.readSliceAll(dest_mem[target_addr..][0..phdr.p_filesz]);
148151
@memset(dest_mem[target_addr + phdr.p_filesz ..][0 .. phdr.p_memsz - phdr.p_filesz], 0);
149152
}
150-
151-
// Set PC to entry point
152-
cpu.pc = @intCast(header.entry);
153153
}
154154

155155
// Run the test

0 commit comments

Comments
 (0)