]> code.bitgloo.com Git - clyne/zig-stm32l476.git/commitdiff
smaller stack; complete vector table
authorClyne Sullivan <clyne@bitgloo.com>
Sun, 6 Oct 2024 19:00:30 +0000 (15:00 -0400)
committerClyne Sullivan <clyne@bitgloo.com>
Sun, 6 Oct 2024 19:00:30 +0000 (15:00 -0400)
link.ld
src/bootstrap.s
src/interrupt.zig

diff --git a/link.ld b/link.ld
index 5550c7bbf6bfa576d3b369d826b4aee0ef445f85..e777ac48106fa412ecf44f9daf0f6d57d27da9d0 100644 (file)
--- a/link.ld
+++ b/link.ld
@@ -46,7 +46,7 @@ SECTIONS {
        .stack : {
                . = ALIGN(4);
                _bstack = .;
-                . += 2048;
+                . += 1024;
                _tstack = .;
        } > RAM
 }
index fefa602b93894973d547f7148f49af21c2c5c6b9..612fac310312d5b1c123f6d82de4e55d212ddaa6 100644 (file)
@@ -5,6 +5,8 @@
 .extern _tstack
 
 .section .vector_table
+.global init_vector_table
+init_vector_table:
     .word _tstack
     .word _start
     .skip 4 * 14
index 024efc599fdd449596fe5dec2f86c4afb8a7339c..f00fa22d000f6cbc87dfba602dbc902e2a0cea83 100644 (file)
@@ -1,8 +1,10 @@
-const vector_table_type = [256] *const fn () void;
+extern const init_vector_table: [2]u32;
+
+const vector_table_type = [128] *const fn () void; // up to 256
 var vector_table: vector_table_type align(256) = undefined;
 var vtor: **volatile vector_table_type = @ptrFromInt(0xE000ED08);
 
-pub const vector = enum(u8) {
+pub const vector = enum(u7) {
     NMI = 2,
     HardFault,
     MemManage,
@@ -20,6 +22,8 @@ pub const vector = enum(u8) {
 };
 
 pub fn initialize() void {
+    vector_table[0] = @ptrFromInt(init_vector_table[0]);
+    vector_table[1] = @ptrFromInt(init_vector_table[1]);
     register(.NMI, nmi);
     register(.HardFault, hardfault);
     register(.MemManage, memmanage);