Compensate missing return address, which is a 4-byte on i686 and an 8-byte on amd64
Tüm denetlemeler başarılı oldu
Builds / ExectOS (i686) (push) Successful in 32s
Builds / ExectOS (amd64) (push) Successful in 28s

Bu işleme şunda yer alıyor:
Rafal Kupiec 2023-11-05 20:07:13 +01:00
ebeveyn ba833422b0
işleme 91ce0f9947
İmzalayan: belliash
GPG Anahtar Kimliği: 4E829243E0CFE6B4
4 değiştirilmiş dosya ile 8 ekleme ve 2 silme

Dosyayı Görüntüle

@ -133,6 +133,9 @@
#define KTRAP_FRAME_ALIGN 0x10
#define KTRAP_FRAME_SIZE sizeof(KTRAP_FRAME)
/* Return address size pushed by 'call' instruction */
#define KRETURN_ADDRESS_SIZE 0x8
/* Size of legacy 387 registers */
#define SIZE_OF_80387_REGISTERS 80

Dosyayı Görüntüle

@ -162,6 +162,9 @@
/* Number of supported extensions */
#define MAXIMUM_SUPPORTED_EXTENSION 512
/* Return address size pushed by 'call' instruction */
#define KRETURN_ADDRESS_SIZE 0x4
/* Size of 387 registers */
#define SIZE_OF_80387_REGISTERS 80
#define SIZE_OF_FX_REGISTERS 128

Dosyayı Görüntüle

@ -105,6 +105,6 @@ KepSwitchBootStack(IN ULONG_PTR Stack)
"jmp KepStartKernel\n"
:
: "m" (Stack),
"i" (FLOATING_SAVE_AREA_SIZE | KEXCEPTION_FRAME_SIZE | KSWITCH_FRAME_SIZE),
"i" (FLOATING_SAVE_AREA_SIZE | KEXCEPTION_FRAME_SIZE | KSWITCH_FRAME_SIZE | KRETURN_ADDRESS_SIZE),
"p" (KepStartKernel));
}

Dosyayı Görüntüle

@ -106,7 +106,7 @@ KepSwitchBootStack(IN ULONG_PTR Stack)
"jmp _KepStartKernel@0\n"
:
: "m" (Stack),
"i" (KTRAP_FRAME_ALIGN | KTRAP_FRAME_SIZE | NPX_FRAME_SIZE),
"i" (KTRAP_FRAME_ALIGN | KTRAP_FRAME_SIZE | NPX_FRAME_SIZE | KRETURN_ADDRESS_SIZE),
"i" (CR0_EM | CR0_MP | CR0_TS),
"p" (KepStartKernel));
}