disable default watchdog timer
tested on real laptop, works
This commit is contained in:
@@ -99,22 +99,33 @@ efi_print_hex:
|
|||||||
proc main _efi_handle, _efi_table
|
proc main _efi_handle, _efi_table
|
||||||
mov [efi_handle], rcx
|
mov [efi_handle], rcx
|
||||||
mov [efi_table], rdx
|
mov [efi_table], rdx
|
||||||
|
mov rbx, rdx
|
||||||
|
|
||||||
mov rcx, [rdx+EFI_SYSTEM_TABLE.ConOut]
|
; reset the console
|
||||||
|
mov rcx, [rbx + EFI_SYSTEM_TABLE.ConOut]
|
||||||
fstcall [rcx + EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset], rcx, 1
|
fstcall [rcx + EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset], rcx, 1
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz $ ; loop if fail to init text
|
jnz $ ; loop if fail to init text
|
||||||
|
|
||||||
mov rdx, [efi_table]
|
; disable the default watchdog timer, otherwise it will reboot the pc after 5 mins of this app work
|
||||||
|
mov rcx, [rbx + EFI_SYSTEM_TABLE.BootServices]
|
||||||
|
fstcall [rcx + EFI_BOOT_SERVICES.SetWatchdogTimer], rcx, 0, 0, 0, 0
|
||||||
|
test eax, eax
|
||||||
|
jz @f
|
||||||
|
mov rcx, msg_failed_disable_watchdog
|
||||||
|
call efi_puts
|
||||||
|
jmp $
|
||||||
|
@@:
|
||||||
|
|
||||||
mov rcx, msg_firmware_vendor
|
mov rcx, msg_firmware_vendor
|
||||||
call efi_puts
|
call efi_puts
|
||||||
mov rcx, [rdx + EFI_SYSTEM_TABLE.FirmwareVendor]
|
mov rcx, [rbx + EFI_SYSTEM_TABLE.FirmwareVendor]
|
||||||
call efi_puts
|
call efi_puts
|
||||||
mov rcx, msg_newline
|
mov rcx, msg_newline
|
||||||
call efi_puts
|
call efi_puts
|
||||||
mov rcx, msg_firmware_revision
|
mov rcx, msg_firmware_revision
|
||||||
call efi_puts
|
call efi_puts
|
||||||
mov rcx, qword [rdx + EFI_SYSTEM_TABLE.FirmwareRevision]
|
mov ecx, [rbx + EFI_SYSTEM_TABLE.FirmwareRevision]
|
||||||
call efi_print_hex
|
call efi_print_hex
|
||||||
mov rcx, msg_newline
|
mov rcx, msg_newline
|
||||||
call efi_puts
|
call efi_puts
|
||||||
@@ -159,6 +170,7 @@ msg_2 du "Lorem ipsum ! !",13,10,0
|
|||||||
msg_firmware_vendor du "UEFI vendor: ", 0
|
msg_firmware_vendor du "UEFI vendor: ", 0
|
||||||
msg_firmware_revision du "UEFI revision: ", 0
|
msg_firmware_revision du "UEFI revision: ", 0
|
||||||
msg_newline du 13,10,0
|
msg_newline du 13,10,0
|
||||||
|
msg_failed_disable_watchdog du "Failed to disable watchdog timer!", 13,10,0
|
||||||
|
|
||||||
|
|
||||||
section '.reloc' fixups data discardable
|
section '.reloc' fixups data discardable
|
||||||
|
Reference in New Issue
Block a user