Implement HlClearInterruptFlag() and HlSetInterruptFlag() intrinsic routines
Все проверки выполнены успешно
ci/woodpecker/push/build Pipeline was successful

Этот коммит содержится в:
Rafal Kupiec 2022-12-27 18:54:01 +01:00
родитель 8f3a4aef60
Коммит 5b75d005a7
Подписано: belliash
Идентификатор ключа GPG: 4E829243E0CFE6B4
5 изменённых файлов: 74 добавлений и 0 удалений

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

@ -18,6 +18,10 @@
extern ULONG ComPortAddress[];
/* HAL library routines forward references */
XTCDECL
VOID
HlClearInterruptFlag();
XTCDECL
BOOLEAN
HlCpuId(IN OUT PCPUID_REGISTERS Registers);
@ -39,6 +43,10 @@ XTCDECL
ULONG_PTR
HlReadControlRegister(IN USHORT ControlRegister);
XTCDECL
VOID
HlSetInterruptFlag();
XTCDECL
VOID
HlWriteControlRegister(IN USHORT ControlRegister,

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

@ -18,6 +18,10 @@
extern ULONG ComPortAddress[];
/* HAL library routines forward references */
XTCDECL
VOID
HlClearInterruptFlag();
XTCDECL
BOOLEAN
HlCpuId(IN OUT PCPUID_REGISTERS Registers);
@ -39,6 +43,10 @@ XTCDECL
ULONG_PTR
HlReadControlRegister(IN USHORT ControlRegister);
XTCDECL
VOID
HlSetInterruptFlag();
XTCDECL
VOID
HlWriteControlRegister(IN USHORT ControlRegister,

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

@ -380,6 +380,7 @@ BlStartNewStack()
/* Infinite bootloader loop */
BlEfiPrint(L"System halted!");
HlClearInterruptFlag();
HlHalt();
/* Return success */
@ -461,6 +462,7 @@ BlStartXtLoader(IN EFI_HANDLE ImageHandle,
/* Infinite bootloader loop */
BlDbgPrint(L"ERROR: Unexpected exception occurred, probably did not create a new stack\n");
BlEfiPrint(L"System halted!");
HlClearInterruptFlag();
HlHalt();
/* Return success */

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

@ -9,6 +9,20 @@
#include "xtkmapi.h"
/**
* Instructs the processor to clear the interrupt flag.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
HlClearInterruptFlag()
{
asm volatile("cli");
}
/**
* Retrieves a various amount of information about the CPU.
*
@ -176,6 +190,20 @@ HlReadControlRegister(IN USHORT ControlRegister)
return Value;
}
/**
* Instructs the processor to set the interrupt flag.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
HlSetInterruptFlag()
{
asm volatile("sti");
}
/**
* Writes a value to the specified CPU control register.
*

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

@ -9,6 +9,20 @@
#include "xtkmapi.h"
/**
* Instructs the processor to clear the interrupt flag.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
HlClearInterruptFlag()
{
asm volatile("cli");
}
/**
* Retrieves a various amount of information about the CPU.
*
@ -170,6 +184,20 @@ HlReadControlRegister(IN USHORT ControlRegister)
return Value;
}
/**
* Instructs the processor to set the interrupt flag.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
HlSetInterruptFlag()
{
asm volatile("sti");
}
/**
* Writes a value to the specified CPU control register.
*