Added shared info/data pages and removed UENVS
[akaros.git] / lib / entry.S
1 #include <inc/mmu.h>
2 #include <inc/memlayout.h>
3
4 .data
5
6
7 // Define the global symbols 'envs', 'pages', 'vpt', and 'vpd'
8 // so that they can be used in C as if they were ordinary global arrays.
9         .globl procinfo
10         .set procinfo, UINFO
11         .globl procdata
12         .set procdata, UDATA
13         .globl pages
14         .set pages, UPAGES
15         .globl vpt
16         .set vpt, UVPT
17         .globl vpd
18         .set vpd, (UVPT+(UVPT>>12)*4)
19
20
21 // Entrypoint - this is where the kernel (or our parent environment)
22 // starts us running when we are initially loaded into a new environment.
23 .text
24 .globl _start
25 _start:
26         // See if we were started with arguments on the stack
27         cmpl $USTACKTOP, %esp
28         jne args_exist
29
30         // If not, push dummy argc/argv arguments.
31         // This happens when we are loaded by the kernel,
32         // because the kernel does not know about passing arguments.
33         pushl $0
34         pushl $0
35
36 args_exist:
37         call libmain
38 1:      jmp 1b
39