kern
view src/segm-asm.S @ 30:a2c6110bd24b
refactored the code a bit, and merged with the malloc implementation branch
author | John Tsiombikas <nuclear@siggraph.org> |
---|---|
date | Fri, 27 May 2011 22:09:10 +0300 |
parents | 611b2d66420b |
children | 4eaecb14fe31 |
line source
1 .data
2 .align 4
3 /* memory reserved for setup_selectors */
4 off:.long 0
5 seg:.short 0
6 /* memory reserved for set_gdt */
7 lim:.short 0
8 addr:.long 0
10 .text
11 /* setup_selectors(uint16_t code, uint16_t data)
12 * loads the requested selectors to all the selector registers */
13 .globl setup_selectors
14 setup_selectors:
15 /* set data selectors directly */
16 movl 8(%esp), %eax
17 movw %ax, %ss
18 movw %ax, %es
19 movw %ax, %ds
20 movw %ax, %gs
21 movw %ax, %fs
22 /* set cs using a long jump */
23 movl 4(%esp), %eax
24 movw %ax, (seg)
25 movl $ldcs, (off)
26 ljmp *off
27 ldcs:
28 ret
30 /* set_gdt(uint32_t addr, uint16_t limit)
31 * loads the GDTR with the new address and limit for the GDT */
32 .globl set_gdt
33 set_gdt:
34 movl 4(%esp), %eax
35 movl %eax, (addr)
36 movw 8(%esp), %ax
37 movw %ax, (lim)
38 lgdt (lim)
39 ret