Ensure SS and RSP are saved in trap frame
Все проверки выполнены успешно
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (amd64, release) (push) Successful in 34s
Builds / ExectOS (amd64, debug) (push) Successful in 46s
Builds / ExectOS (i686, release) (push) Successful in 43s

Этот коммит содержится в:
2026-03-15 17:32:01 +01:00
родитель 6cdb66cbb3
Коммит 0fed593147
2 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@@ -104,12 +104,20 @@ ArTrap\Vector:
/* Test previous mode and swap GS if needed */
movl $0, TrapPreviousMode(%rbp)
mov %cs, %ax
and $1, %al
and $3, %al
mov %al, TrapPreviousMode(%rbp)
jz KernelMode$\Vector
swapgs
jmp UserMode$\Vector
KernelMode$\Vector:
/* Save kernel stack pointer (SS:RSP) */
movl %ss, %eax
mov %eax, TrapSegSs(%rbp)
lea TRAP_FRAME_SIZE(%rbp), %rax
mov %rax, TrapRsp(%rbp)
UserMode$\Vector:
/* Push Frame Pointer, clear direction flag and pass to trap dispatcher */
mov %rsp, %rcx
cld

Просмотреть файл

@@ -56,6 +56,8 @@
#define TrapSegEs 330
#define TrapSegFs 332
#define TrapSegGs 334
#define TrapRsp 496
#define TrapSegSs 504
/* KTRAP_FRAME length related definitions */
#define TRAP_FRAME_SIZE 512