Added a boot.o based on the PowerPC one.
authorDavid Given <dg@cowlark.com>
Tue, 4 Sep 2018 22:00:13 +0000 (00:00 +0200)
committerDavid Given <dg@cowlark.com>
Tue, 4 Sep 2018 22:00:13 +0000 (00:00 +0200)
plat/linuxmips/boot.s [new file with mode: 0644]
plat/linuxmips/build-pkg.lua

diff --git a/plat/linuxmips/boot.s b/plat/linuxmips/boot.s
new file mode 100644 (file)
index 0000000..cc6d9ce
--- /dev/null
@@ -0,0 +1,57 @@
+#
+! Declare segments (the order is important).
+
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+
+.sect .text
+
+begtext:
+       ! This code is placed at the beginning of the ELF executable and is the
+       ! first thing that runs.
+       !
+       ! On entry, the stack looks like this:
+       !
+       ! sp+...          NULL
+       ! sp+8+(4*argc)   env (X quads)
+       ! sp+4+(4*argc)   NULL
+       ! sp+4            argv (argc quads)
+       ! sp              argc
+       !
+       ! The ACK actually expects:
+       !
+       ! sp+8            argc
+       ! sp+4            ptr to argv
+       ! sp              ptr to env
+
+       lw r4, 0(sp)             ! r4 = argc
+       addiu r5, sp, 4          ! r5 = argv
+       sll r6, r4, 2            ! r6 = argc*4
+       addu r6, r6, r5          ! r6 = last arg
+       addiu r6, r6, 8          ! r6 = env
+
+       addiu sp, sp, -3 * 4
+       sw r4, 0(sp)
+       sw r5, 0(sp)
+       sw r6, 0(sp)
+
+       b __m_a_i_n
+       nop
+
+! Define symbols at the beginning of our various segments, so that we can find
+! them. (Except .text, which has already been done.)
+
+.sect .data;       begdata:
+.sect .rom;        begrom:
+.sect .bss;        begbss:
+
+! Some magic data. All EM systems need these.
+
+.define _errno
+.comm _errno, 4              ! Posix errno storage
+
+.define .trppc, .ignmask
+.comm .trppc, 4              ! ptr to user trap handler
+.comm .ignmask, 4            ! user trap ignore mask 
index 6aec051..8f9a100 100644 (file)
@@ -1,10 +1,10 @@
 include("plat/build.lua")
 
---ackfile {
---     name = "boot",
---     srcs = { "./boot.s" },
---     vars = { plat = "linuxppc" }
---}
+ackfile {
+       name = "boot",
+       srcs = { "./boot.s" },
+       vars = { plat = "linuxmips" }
+}
 --
 --build_plat_libs {
 --     name = "libs",
@@ -18,7 +18,7 @@ installable {
                "+tools",
 --             "+libs",
                "./include+pkg",
---             ["$(PLATIND)/linuxppc/boot.o"] = "+boot",
+               ["$(PLATIND)/linuxmips/boot.o"] = "+boot",
 --       ["$(PLATIND)/linuxppc/libsys.a"] = "./libsys+lib",
        }
 }