summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/lgdt.s
blob: 7122ef984e49a7aa7497b1695a283ab717a8aed9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
.global gdt_load
.type gdt_load @function
gdt_load:
    lgdt (%rdi)
.reload_segments:
    pushq $0x8
    leaq .reload_cs, %rax
    pushq %rax
    lretq
.reload_cs:
    movw $0x10, %ax
    movw %ax, %ds
    movw %ax, %es
    movw %ax, %fs
    movw %ax, %gs
    movw %ax, %ss
    retq
.size gdt_load, . - gdt_load

.global tss_flush
.type tss_flush @function
tss_flush:
    movw %di, %ax
    ltr %ax
    retq
.size tss_flush, . - tss_flush