QoL improvements

This commit is contained in:
Alex
2023-03-27 20:11:32 +03:00
parent 3eb6923374
commit 93afcd2210
59 changed files with 612 additions and 424 deletions

View File

@ -140,6 +140,8 @@ namespace CPU
#endif
return true;
}
default:
break;
}
return false;
}

View File

@ -508,7 +508,7 @@ namespace CrashHandler
EHPrint("\e00FF000");
if (i % 128 == 127)
{
short Percentage = (i * 100) / bm.Size;
short Percentage = s_cst(short, (i * 100) / bm.Size);
EHPrint("\n\eFAFAFA[%03ld%%] %08ld: ", Percentage, i);
Display->SetBuffer(SBIdx);
}
@ -524,8 +524,8 @@ namespace CrashHandler
uint64_t Reserved = KernelAllocator.GetReservedMemory();
EHPrint("\e22AA44Total: %ld bytes\n\eFF0000Used: %ld bytes\n\e00FF00Free: %ld bytes\n\eFF00FFReserved: %ld bytes\n", Total, Used, Free, Reserved);
int Progress = (Used * 100) / Total;
int ReservedProgress = (Reserved * 100) / Total;
int Progress = s_cst(int, (Used * 100) / Total);
int ReservedProgress = s_cst(int, (Reserved * 100) / Total);
EHPrint("\e22AA44%3d%% \eCCCCCC[", Progress);
for (int i = 0; i < Progress; i++)
EHPrint("\eFF0000|");
@ -695,7 +695,7 @@ namespace CrashHandler
if (unlikely(i % 0x1000 == 0))
{
int NewProgress = (i * 100) / ProgressLength;
int NewProgress = (int)((i * 100) / ProgressLength);
if (unlikely(NewProgress != Progress))
{
Progress = NewProgress;

View File

@ -126,6 +126,9 @@ namespace CrashHandler
case KEY_D_RIGHT:
case KEY_D_DOWN:
ArrowInput(scanCode);
break;
default:
break;
}
int key = GetLetterFromScanCode(scanCode);
@ -148,8 +151,8 @@ namespace CrashHandler
}
else
{
append(UserInputBuffer, key);
Display->Print(key, SBIdx);
append(UserInputBuffer, s_cst(char, key));
Display->Print((char)key, SBIdx);
BackSpaceLimit++;
}
Display->SetBuffer(SBIdx); // Update as we type.

View File

@ -141,6 +141,13 @@ namespace CrashHandler
EHPrint(" %ld\n", SelCode.Idx);
break;
}
default:
{
EHPrint(" ? \n");
EHPrint(" ? \n");
EHPrint(" %ld\n", SelCode.Idx);
break;
}
}
break;
}
@ -181,6 +188,13 @@ namespace CrashHandler
EHPrint(" %ld\n", SelCode.Idx);
break;
}
default:
{
EHPrint(" ? \n");
EHPrint(" ? \n");
EHPrint(" %ld\n", SelCode.Idx);
break;
}
}
break;
}
@ -220,6 +234,13 @@ namespace CrashHandler
EHPrint(" %ld\n", SelCode.Idx);
break;
}
default:
{
EHPrint(" ? \n");
EHPrint(" ? \n");
EHPrint(" %ld\n", SelCode.Idx);
break;
}
}
break;
}
@ -260,6 +281,13 @@ namespace CrashHandler
EHPrint(" %ld\n", SelCode.Idx);
break;
}
default:
{
EHPrint(" ? \n");
EHPrint(" ? \n");
EHPrint(" %ld\n", SelCode.Idx);
break;
}
}
break;
}

View File

@ -235,9 +235,9 @@ namespace Driver
if (!Handle.InterruptCallback)
{
#if defined(a64) || defined(a32)
int IntNum = Frame->InterruptNumber - 32;
uint64_t IntNum = Frame->InterruptNumber - 32;
#elif defined(aa64)
int IntNum = Frame->InterruptNumber;
uint64_t IntNum = Frame->InterruptNumber;
#endif
warn("Interrupt callback for %ld is not set for driver %ld!", IntNum, Handle.DriverUID);
return;

View File

@ -20,7 +20,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -75,7 +75,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -123,7 +123,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -172,7 +172,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -253,7 +253,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -302,7 +302,7 @@ namespace Driver
debug("Searching for conflicting drivers...");
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -392,7 +392,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));

View File

@ -133,7 +133,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -181,7 +181,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -229,7 +229,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -306,7 +306,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -383,7 +383,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -431,7 +431,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
@ -479,7 +479,7 @@ namespace Driver
if (fexExtended->Driver.OverrideOnConflict)
{
std::vector<int> DriversToRemove = std::vector<int>();
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
foreach (auto Drv in Drivers)
{
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));

View File

@ -190,16 +190,16 @@ namespace Interrupts
Handler::~Handler()
{
debug("Unregistering interrupt handler for IRQ%d.", InterruptNumber);
debug("Unregistering interrupt handler for IRQ%d.", this->InterruptNumber);
for (size_t i = 0; i < RegisteredEvents.size(); i++)
{
if (RegisteredEvents[i].ID == InterruptNumber)
if (RegisteredEvents[i].ID == this->InterruptNumber)
{
RegisteredEvents.remove(i);
return;
}
}
warn("Event %d not found.", InterruptNumber);
warn("Event %d not found.", this->InterruptNumber);
}
#if defined(a64)

View File

@ -22,9 +22,9 @@ namespace PCI
{
uint8_t Digit = (Value >> (4 - (i * 4))) & 0xF;
if (Digit < 10)
Buffer[i] = '0' + Digit;
Buffer[i] = s_cst(char, '0' + Digit);
else
Buffer[i] = 'A' + (Digit - 10);
Buffer[i] = s_cst(char, 'A' + (Digit - 10));
}
return Buffer;
}
@ -37,9 +37,9 @@ namespace PCI
{
uint8_t Digit = (Value >> (28 - (i * 4))) & 0xF;
if (Digit < 10)
Buffer[i] = '0' + Digit;
Buffer[i] = s_cst(char, '0' + Digit);
else
Buffer[i] = 'A' + (Digit - 10);
Buffer[i] = s_cst(char, 'A' + (Digit - 10));
}
return Buffer;
}
@ -555,6 +555,8 @@ namespace PCI
}
break;
}
default:
break;
}
fixme("Unknown device %04x:%04x", VendorID, DeviceID);
return u32ToHexString(DeviceID);
@ -649,7 +651,10 @@ namespace PCI
}
break;
}
default:
break;
}
default:
break;
}
case 0x03:
@ -667,6 +672,8 @@ namespace PCI
return "VGA Compatible Controller";
}
break;
default:
break;
}
break;
}
@ -838,7 +845,7 @@ namespace PCI
PCI::PCI()
{
#if defined(a64)
int Entries = ((((ACPI::ACPI *)PowerManager->GetACPI())->MCFG->Header.Length) - sizeof(ACPI::ACPI::MCFGHeader)) / sizeof(DeviceConfig);
int Entries = s_cst(int, ((((ACPI::ACPI *)PowerManager->GetACPI())->MCFG->Header.Length) - sizeof(ACPI::ACPI::MCFGHeader)) / sizeof(DeviceConfig));
Memory::Virtual vma = Memory::Virtual(KernelPageTable);
for (int t = 0; t < Entries; t++)
{

View File

@ -46,6 +46,8 @@ namespace SymbolResolver
debug("String table found, %d entries", ElfSections[i].sh_size);
}
break;
default:
break;
}
if (ElfSymbols != nullptr && strtab != nullptr)

View File

@ -64,7 +64,7 @@ namespace Time
this->hpet = (void *)acpi->HPET->Address.Address;
HPET *hpet = (HPET *)this->hpet;
trace("%s timer is at address %016p", acpi->HPET->Header.OEMID, (void *)acpi->HPET->Address.Address);
clk = hpet->GeneralCapabilities >> 32;
clk = s_cst(uint32_t, hpet->GeneralCapabilities >> 32);
mmoutq(&hpet->GeneralConfiguration, 0);
mmoutq(&hpet->MainCounterValue, 0);
mmoutq(&hpet->GeneralConfiguration, 1);

View File

@ -80,16 +80,16 @@ namespace UniversalAsynchronousReceiverTransmitter
return;
// Initialize the serial port
NoProfiler_outportb(Port + 1, 0x00); // Disable all interrupts
NoProfiler_outportb(Port + 3, SERIAL_ENABLE_DLAB); // Enable DLAB (set baud rate divisor)
NoProfiler_outportb(Port + 0, SERIAL_RATE_115200_LO); // Set divisor to 1 (lo byte) 115200 baud
NoProfiler_outportb(Port + 1, SERIAL_RATE_115200_HI); // (hi byte)
NoProfiler_outportb(Port + 3, 0x03); // 8 bits, no parity, one stop bit
NoProfiler_outportb(Port + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold
NoProfiler_outportb(Port + 4, 0x0B); // IRQs enabled, RTS/DSR set
NoProfiler_outportb(s_cst(uint16_t, Port + 1), 0x00); // Disable all interrupts
NoProfiler_outportb(s_cst(uint16_t, Port + 3), SERIAL_ENABLE_DLAB); // Enable DLAB (set baud rate divisor)
NoProfiler_outportb(s_cst(uint16_t, Port + 0), SERIAL_RATE_115200_LO); // Set divisor to 1 (lo byte) 115200 baud
NoProfiler_outportb(s_cst(uint16_t, Port + 1), SERIAL_RATE_115200_HI); // (hi byte)
NoProfiler_outportb(s_cst(uint16_t, Port + 3), 0x03); // 8 bits, no parity, one stop bit
NoProfiler_outportb(s_cst(uint16_t, Port + 2), 0xC7); // Enable FIFO, clear them, with 14-byte threshold
NoProfiler_outportb(s_cst(uint16_t, Port + 4), 0x0B); // IRQs enabled, RTS/DSR set
// Check if the serial port is faulty.
if (NoProfiler_inportb(Port + 0) != 0xAE)
if (NoProfiler_inportb(s_cst(uint16_t, Port + 0)) != 0xAE)
{
static int once = 0;
if (!once++)
@ -99,7 +99,7 @@ namespace UniversalAsynchronousReceiverTransmitter
}
// Set to normal operation mode.
NoProfiler_outportb(Port + 4, 0x0F);
NoProfiler_outportb(s_cst(uint16_t, Port + 4), 0x0F);
serialports[PortNumber] = true;
#endif
}
@ -109,7 +109,7 @@ namespace UniversalAsynchronousReceiverTransmitter
SafeFunction NIF void UART::Write(uint8_t Char)
{
#if defined(a64) || defined(a32)
while ((NoProfiler_inportb(Port + 5) & SERIAL_BUFFER_EMPTY) == 0)
while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & SERIAL_BUFFER_EMPTY) == 0)
;
NoProfiler_outportb(Port, Char);
#endif
@ -121,7 +121,7 @@ namespace UniversalAsynchronousReceiverTransmitter
SafeFunction NIF uint8_t UART::Read()
{
#if defined(a64) || defined(a32)
while ((NoProfiler_inportb(Port + 5) & 1) == 0)
while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & 1) == 0)
;
return NoProfiler_inportb(Port);
#endif

View File

@ -116,14 +116,14 @@ namespace Video
uint8_t g = (color >> 8) & 0xff;
uint8_t b = (color >> 16) & 0xff;
r = (r * Value) / 100;
g = (g * Value) / 100;
b = (b * Value) / 100;
r = s_cst(uint8_t, (r * Value) / 100);
g = s_cst(uint8_t, (g * Value) / 100);
b = s_cst(uint8_t, (b * Value) / 100);
pixel[y * this->Buffers[Index].Width + x] = (b << 16) | (g << 8) | r;
}
}
this->Buffers[Index].Brightness = Value;
this->Buffers[Index].Brightness = s_cst(char, Value);
}
void Display::SetBufferCursor(int Index, uint32_t X, uint32_t Y)
@ -198,7 +198,7 @@ namespace Video
{
uint32_t LineSize = this->Buffers[Index].Width * (this->framebuffer.BitsPerPixel / 8);
uint32_t BytesToMove = LineSize * Lines * this->CurrentFont->GetInfo().Height;
uint32_t BytesToClear = this->Buffers[Index].Size - BytesToMove;
size_t BytesToClear = this->Buffers[Index].Size - BytesToMove;
memmove(this->Buffers[Index].Buffer, (uint8_t *)this->Buffers[Index].Buffer + BytesToMove, BytesToClear);
memset((uint8_t *)this->Buffers[Index].Buffer + BytesToClear, 0, BytesToMove);
}
@ -304,6 +304,8 @@ namespace Video
this->Buffers[Index].CursorY += this->GetCurrentFont()->GetInfo().Height;
return Char;
}
default:
break;
}
uint32_t FontHeight = this->GetCurrentFont()->GetInfo().Height;
@ -412,7 +414,7 @@ namespace Video
this->ClearBuffer(0);
this->SetBuffer(0);
for (size_t i = 0; i < sizeof(this->Buffers) / sizeof(this->Buffers[0]); i++)
for (int i = 0; i < s_cst(int, sizeof(this->Buffers) / sizeof(this->Buffers[0])); i++)
{
if (this->Buffers[i].Checksum == 0xBBFFE515A117E)
this->DeleteBuffer(i);