Added more syscalls
[akaros.git] / user / parlib / src / sparc / entry.S
1 #include <arch/mmu.h>
2 #include <arch/arch.h>
3 #include <ros/memlayout.h>
4 #include <parlib.h>
5
6 .data
7
8
9 // Define the global symbols 'envs', 'pages', 'vpt', and 'vpd'
10 // so that they can be used in C as if they were ordinary global arrays.
11         .globl procinfo
12         .set procinfo, UINFO
13         .globl procdata
14         .set procdata, UDATA
15         .globl pages
16         .set pages, UPAGES
17         .globl vpt
18         .set vpt, UVPT
19         .globl vpd
20         .set vpd, (UVPT+(UVPT>>12)*4)
21
22 .align 4
23 .globl stack_ptr_array
24 stack_ptr_array:
25         .word 0
26 .globl tls_array
27 tls_array:
28         .word 0
29
30 // Entrypoint - this is where the kernel (or our parent environment)
31 // starts us running when we are initially loaded into a new environment.
32 .text
33 .globl _start
34 _start:
35         tst     %g6
36         bne     notcore0
37          nop
38
39         // Set up TLS
40         set     core0_tls+PARLIB_TLS_SIZE,%g7
41
42         call    parlib_main
43          nop
44
45         unimp
46
47 notcore0:
48
49         // Get a stack, set %sp
50
51         set     stack_ptr_array, %l0
52         ld      [%l0], %l0
53         sll     %g6, 2, %l1
54         ld      [%l0+%l1], %l0
55         sub     %l0, 64, %sp
56
57         // Set up TLS
58         set     tls_array, %l0
59         ld      [%l0], %l0
60         ld      [%l0+%l1],%g7
61
62         call    parlib_unmain
63          nop
64
65         unimp