mirror of
https://gitlab.os-k.eu/os-k-team/os-k.git
synced 2023-08-25 14:03:10 +02:00
Syscall first parameter (2)
This commit is contained in:
parent
aa0207cf67
commit
4e5da302a0
2
Makefile
2
Makefile
@ -256,7 +256,7 @@ $(KOBJDIR)/kernel/mm/gdt.o: $(KALEIDDIR)/kernel/mm/gdt.c \
|
|||||||
@rm -f $@.1 $@.2
|
@rm -f $@.1 $@.2
|
||||||
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
|
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
|
||||||
|
|
||||||
$(KOBJDIR)/kernel/ke/syscall.o: $(KALEIDDIR)/kernel/ke/syscall.c \
|
$(KOBJDIR)/kernel/ke/syscall.o: $(KALEIDDIR)/kernel/ke/syscall.c \
|
||||||
$(KALEIDDIR)/kernel/ke/syscall.asm | $(KOBJDIR)
|
$(KALEIDDIR)/kernel/ke/syscall.asm | $(KOBJDIR)
|
||||||
@mkdir -p $(shell dirname $@)
|
@mkdir -p $(shell dirname $@)
|
||||||
@$(ASM) $(ASMFLAGS) $(KALEIDDIR)/kernel/ke/syscall.asm -o $@.1
|
@$(ASM) $(ASMFLAGS) $(KALEIDDIR)/kernel/ke/syscall.asm -o $@.1
|
||||||
|
@ -82,6 +82,7 @@
|
|||||||
│ │ │ ├── proc.h
|
│ │ │ ├── proc.h
|
||||||
│ │ │ ├── sched.h
|
│ │ │ ├── sched.h
|
||||||
│ │ │ ├── spinlock.h
|
│ │ │ ├── spinlock.h
|
||||||
|
│ │ │ ├── syscall.h
|
||||||
│ │ │ └── time.h
|
│ │ │ └── time.h
|
||||||
│ │ ├── mm
|
│ │ ├── mm
|
||||||
│ │ │ ├── gdt.h
|
│ │ │ ├── gdt.h
|
||||||
@ -129,7 +130,9 @@
|
|||||||
│ │ │ ├── log.c
|
│ │ │ ├── log.c
|
||||||
│ │ │ ├── panic.c
|
│ │ │ ├── panic.c
|
||||||
│ │ │ ├── pit.c
|
│ │ │ ├── pit.c
|
||||||
│ │ │ └── rtc.c
|
│ │ │ ├── rtc.c
|
||||||
|
│ │ │ ├── syscall.asm
|
||||||
|
│ │ │ └── syscall.c
|
||||||
│ │ ├── mm
|
│ │ ├── mm
|
||||||
│ │ │ ├── gdt.asm
|
│ │ │ ├── gdt.asm
|
||||||
│ │ │ ├── gdt.c
|
│ │ │ ├── gdt.c
|
||||||
@ -179,4 +182,4 @@
|
|||||||
├── ProjectTree
|
├── ProjectTree
|
||||||
└── README.md
|
└── README.md
|
||||||
|
|
||||||
39 directories, 115 files
|
39 directories, 118 files
|
||||||
|
@ -30,20 +30,20 @@ global KeJumpToUserspace
|
|||||||
|
|
||||||
KeJumpToUserspace:
|
KeJumpToUserspace:
|
||||||
|
|
||||||
# rdi = user args
|
; rdi = user args
|
||||||
# rsi = entry point in user space
|
; rsi = entry point in user space
|
||||||
# rdx = user space stack
|
; rdx = user space stack
|
||||||
|
|
||||||
mov rax, 0x1b ; Selector 0x18 (User Data) + RPL 3
|
mov rax, 0x1b ; Selector 0x18 (User Data) + RPL 3
|
||||||
mov ds, ax
|
mov ds, ax
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
|
||||||
# Build a fake iret frame
|
; Build a fake iret frame
|
||||||
push rax # Selector 0x18 (User Data) + RPL 3
|
push rax ; Selector 0x18 (User Data) + RPL 3
|
||||||
push rdx # User space stack
|
push rdx ; User space stack
|
||||||
push 0x202 # rflags = interrupt enable + reserved bit
|
push 0x202 ; rflags = interrupt enable + reserved bit
|
||||||
push 0x23 # Selector 0x20 (User Code) + RPL 3
|
push 0x23 ; Selector 0x20 (User Code) + RPL 3
|
||||||
push rsi # Entry point in user space
|
push rsi ; Entry point in user space
|
||||||
|
|
||||||
xor rax, rax
|
xor rax, rax
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user