diff options
| author | Jake Mannens <jakem_5@hotmail.com> | 2020-08-02 08:27:25 +1000 |
|---|---|---|
| committer | Jake Mannens <jakem_5@hotmail.com> | 2020-08-02 08:27:25 +1000 |
| commit | 5d29745034c854886fb5988fca65cc3757f69a3e (patch) | |
| tree | 445acaa25ee13b0f2e5dbba1acee6c39aa8c4d0f | |
| parent | 4d6fe1c317f0a541922f4cf945365fd31e608e10 (diff) | |
| -rw-r--r-- | kernel/asm.s | 7 | ||||
| -rw-r--r-- | kernel/boot.s | 6 | ||||
| -rw-r--r-- | kernel/traps.s | 13 |
3 files changed, 7 insertions, 19 deletions
diff --git a/kernel/asm.s b/kernel/asm.s index 4e1e376..32153e4 100644 --- a/kernel/asm.s +++ b/kernel/asm.s @@ -70,8 +70,7 @@ set_tss: push ebx mov eax, [ebp+12] mov ebx, [ebp+8] - shl ebx, 3 - add ebx, gdt+40 + lea ebx, [ebx*8+gdt+40] mov [ebx+2], ax shr eax, 16 mov [ebx+4], al @@ -92,9 +91,7 @@ clear_tss: mov ebp, esp push ebx mov ebx, [ebp+8] - shl ebx, 3 - add ebx, gdt+40 - mov byte [ebx+5], 0 + mov byte [ebx*8+gdt+40+5], 0 pop ebx pop ebp ret diff --git a/kernel/boot.s b/kernel/boot.s index 4db2cf7..e844c5b 100644 --- a/kernel/boot.s +++ b/kernel/boot.s @@ -186,8 +186,7 @@ register_isr: push ebp mov ebp, esp mov edx, [ebp+8] - shl edx, 3 - add edx, idt + lea edx, [edx*8+idt] mov eax, [ebp+16] mov [edx], ax shr eax, 16 @@ -206,8 +205,7 @@ register_trap: push ebp mov ebp, esp mov edx, [ebp+8] - shl edx, 3 - add edx, idt + lea edx, [edx*8+idt] mov eax, [ebp+16] mov [edx], ax shr eax, 16 diff --git a/kernel/traps.s b/kernel/traps.s index ca083dd..475495b 100644 --- a/kernel/traps.s +++ b/kernel/traps.s @@ -117,10 +117,7 @@ traps_init: mov ecx, 0 mov edx, idt .loop: - mov eax, ecx - shl eax, 2 - add eax, traps - mov eax, [eax] + mov eax, [ecx*4+traps] mov [edx], ax shr eax, 16 mov [edx+6], ax @@ -279,9 +276,7 @@ syscall_handler: push ecx push ebx and eax, 0xFF - shl eax, 2 - add eax, call_table - call [eax] + call [eax*4+call_table] add esp, 12 ; preserve the syscall's return value mov [esp+30], eax @@ -326,9 +321,7 @@ check_signals: inc ecx mov ebx, ecx ; calculate offset to the handler function - shl ecx, 2 - add ecx, eax - add ecx, ts_sig_handlers + lea ecx, [ecx*4+eax+ts_sig_handlers] cmp dword [ecx], 0 jne .custom_handler ; call the default handler |
