瀏覽代碼

netbsd: startup code, first working version for arm

git-svn-id: trunk@38591 -
Károly Balogh 7 年之前
父節點
當前提交
b06105c893
共有 1 個文件被更改,包括 24 次插入14 次删除
  1. 24 14
      rtl/netbsd/arm/prt0.as

+ 24 - 14
rtl/netbsd/arm/prt0.as

@@ -14,28 +14,38 @@
 #
 # NetBSD standard (shared) ELF/arm startup code for Free Pascal
 
+# r12/ip = ps_strings on entry
+
 .section .text
     .globl _start
 _start:
-#        move.l  %a2,-(%sp)              | ps_strings
-#        move.l  %a0,-(%sp)              | obj
-#        move.l  %a1,-(%sp)              | cleanup
+        mov     ip, r0
+        mov     r0, r2
+        mov     r2, ip
+
+        ldr     r3, [r2, #0]
+        ldr     r4, =operatingsystem_parameter_argv
+        str     r3, [r4]
+        ldr     r3, [r2, #4]
+        ldr     r4, =operatingsystem_parameter_argc
+        str     r3, [r4]
+        ldr     r3, [r2, #8]
+        ldr     r4, =operatingsystem_parameter_envp
+        str     r3, [r4]
+        ldr     r4, =environ
+        str     r3, [r4]
 
-#        move.l  0(%a2),operatingsystem_parameter_argv
-#        move.l  4(%a2),operatingsystem_parameter_argc
-#        move.l  8(%a2),operatingsystem_parameter_envp
-#        move.l  8(%a2),environ
+# cache align, just in case
+        bic     sp, sp, #7
 
-#        jsr     PASCALMAIN
-#        jmp     _haltproc
+        bl      PASCALMAIN
+        bl      _haltproc
 
     .globl _haltproc
 _haltproc:
-#        move.l  operatingsystem_result,-(%sp)
-#        move.l  #0,-(%sp)
-#        moveq.l #1,%d0
-#        trap    #0
-#        rts
+        ldr     r0,=operatingsystem_result
+        ldr     r0,[r0]
+        svc     0xa00001
 
 
 .section .data