attempting to sort out what looks like a stack overflow
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 10 Apr 2022 16:30:04 +0000 (17:30 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 10 Apr 2022 16:30:04 +0000 (17:30 +0100)
coldboot/coldboot.c
coldboot/powerpc.lds.S

index 0f42a827f96383fdc27f0f85c4f827b148b060fa..bd030c419abde05224d6c49da0b51dd49cae1597 100644 (file)
@@ -35,15 +35,6 @@ struct uart_regs {
        uint32_t ev_enable;
 };
 
-void memcpy(void *dest, void *src, size_t n) {
-   int i;
-   //cast src and dest to char*
-   char *src_char = (char *)src;
-   char *dest_char = (char *)dest;
-   for (i=0; i<n; i++)
-         dest_char[i] = src_char[i]; //copy contents byte by byte
-}
-
 void uart_writeuint32(uint32_t val) {
        const char lut[] = { '0', '1', '2', '3', '4', '5', '6', '7',
                          '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
@@ -56,6 +47,23 @@ void uart_writeuint32(uint32_t val) {
        }
 }
 
+void memcpy(void *dest, void *src, size_t n) {
+    int i;
+    //cast src and dest to char*
+    char *src_char = (char *)src;
+    char *dest_char = (char *)dest;
+    for (i=0; i<n; i++) {
+#if 0
+        if ((i % 1024) == 1023) {
+            puts("memcpy ");
+            uart_writeuint32(i);
+            puts("\r\n");
+        }
+#endif
+        dest_char[i] = src_char[i]; //copy contents byte by byte
+    }
+}
+
 void isr(void) {
 
 }
@@ -104,7 +112,7 @@ static unsigned long copy_flash(unsigned int offset)
         puts(" size ");
         uart_writeuint32(size);
         puts(" addr ");
-        uart_writeuint32((uint32_t)addr);
+        uart_writeuint32((uint32_t)(unsigned long)addr);
         puts("\r\n");
         fl_read(addr, off, size);
         poff += ehdr.e_phentsize;
index b673295c1f3bb0d1903d2b5122e2c3710780b846..4063402de85d5cdc49e1e09c1a74d98cbdcc45ef 100644 (file)
@@ -22,6 +22,6 @@ SECTIONS
        }
        . = ALIGN(0x10);
        __bss_end = .;
-       . = . + 0x5000;
+       . = . + 0x5500;
        __stack_top = .;
 }