working on TSS
This commit is contained in:
parent
cf86c19096
commit
2c4dde7529
|
@ -0,0 +1,65 @@
|
|||
;=----------------------------------------------------------------------------=;
|
||||
; GNU GPL OS/K ;
|
||||
; ;
|
||||
; Desc: Interrupt Descriptor Table related functions ;
|
||||
; ;
|
||||
; ;
|
||||
; Copyright © 2018-2019 The OS/K Team ;
|
||||
; ;
|
||||
; This file is part of OS/K. ;
|
||||
; ;
|
||||
; OS/K is free software: you can redistribute it and/or modify ;
|
||||
; it under the terms of the GNU General Public License as published by ;
|
||||
; the Free Software Foundation, either version 3 of the License, or ;
|
||||
; (at your option) any later version. ;
|
||||
; ;
|
||||
; OS/K is distributed in the hope that it will be useful, ;
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of ;
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;
|
||||
; GNU General Public License for more details. ;
|
||||
; ;
|
||||
; You should have received a copy of the GNU General Public License ;
|
||||
; along with OS/K. If not, see <https://www.gnu.org/licenses/>. ;
|
||||
;=----------------------------------------------------------------------------=;
|
||||
|
||||
[BITS 64]
|
||||
|
||||
extern gdtPtr
|
||||
|
||||
global MmLoadGdt
|
||||
global MmStoreGdt
|
||||
|
||||
;;
|
||||
;; Loads the GDT
|
||||
;;
|
||||
MmLoadGdt:
|
||||
|
||||
;; Loading the gdt via the gdtPtr pointer
|
||||
lgdt [rel gdtPtr]
|
||||
|
||||
;; Reloading the segment registers
|
||||
mov ax, si ; data segment
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
mov fs, ax
|
||||
mov gs, ax
|
||||
mov ss, ax
|
||||
mov cs, di ; code segment
|
||||
|
||||
;; We must far jump because we changed the GDT
|
||||
lea rax, [rel .next]
|
||||
push rax
|
||||
ret
|
||||
|
||||
.next:
|
||||
;ltr dx ; the TSS
|
||||
ret
|
||||
|
||||
;;
|
||||
;; Stores the GDT
|
||||
;;
|
||||
MmStoreGdt:
|
||||
|
||||
;; Loading the gdt via the gdtPtr pointer
|
||||
sgdt [rel gdtPtr]
|
||||
ret
|
Loading…
Reference in New Issue