mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-28 15:34:33 +00:00
Replace __attribute__ with a macro from types.h
This commit is contained in:
parent
7fa3e91a53
commit
98c137566d
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <cpu.hpp>
|
#include <cpu.hpp>
|
||||||
|
|
||||||
extern "C" __attribute__((naked, used, no_stack_protector)) void SystemCallHandlerStub()
|
extern "C" __naked __used __no_stack_protector void SystemCallHandlerStub()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
volatile bool CPUEnabled = false;
|
volatile bool CPUEnabled = false;
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||||
static __attribute__((aligned(PAGE_SIZE))) CPUData CPUs[MAX_CPU] = {0};
|
static __aligned(0x1000) CPUData CPUs[MAX_CPU] = {0};
|
||||||
|
|
||||||
CPUData *GetCPU(uint64_t id) { return &CPUs[id]; }
|
CPUData *GetCPU(uint64_t id) { return &CPUs[id]; }
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
namespace ACPI
|
namespace ACPI
|
||||||
{
|
{
|
||||||
__attribute__((always_inline)) inline bool IsCanonical(uint64_t Address)
|
__always_inline inline bool IsCanonical(uint64_t Address)
|
||||||
{
|
{
|
||||||
return ((Address <= 0x00007FFFFFFFFFFF) || ((Address >= 0xFFFF800000000000) && (Address <= 0xFFFFFFFFFFFFFFFF)));
|
return ((Address <= 0x00007FFFFFFFFFFF) || ((Address >= 0xFFFF800000000000) && (Address <= 0xFFFFFFFFFFFFFFFF)));
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ namespace ACPI
|
|||||||
uint32_t OEMRevision;
|
uint32_t OEMRevision;
|
||||||
uint32_t CreatorID;
|
uint32_t CreatorID;
|
||||||
uint32_t CreatorRevision;
|
uint32_t CreatorRevision;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct GenericAddressStructure
|
struct GenericAddressStructure
|
||||||
{
|
{
|
||||||
@ -50,13 +50,13 @@ namespace ACPI
|
|||||||
uint8_t BitOffset;
|
uint8_t BitOffset;
|
||||||
uint8_t AccessSize;
|
uint8_t AccessSize;
|
||||||
uint64_t Address;
|
uint64_t Address;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct MCFGHeader
|
struct MCFGHeader
|
||||||
{
|
{
|
||||||
struct ACPIHeader Header;
|
struct ACPIHeader Header;
|
||||||
uint64_t Reserved;
|
uint64_t Reserved;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct HPETHeader
|
struct HPETHeader
|
||||||
{
|
{
|
||||||
@ -71,7 +71,7 @@ namespace ACPI
|
|||||||
uint8_t HPETNumber;
|
uint8_t HPETNumber;
|
||||||
uint16_t MinimumTick;
|
uint16_t MinimumTick;
|
||||||
uint8_t PageProtection;
|
uint8_t PageProtection;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct FADTHeader
|
struct FADTHeader
|
||||||
{
|
{
|
||||||
@ -127,7 +127,7 @@ namespace ACPI
|
|||||||
struct GenericAddressStructure X_PMTimerBlock;
|
struct GenericAddressStructure X_PMTimerBlock;
|
||||||
struct GenericAddressStructure X_GPE0Block;
|
struct GenericAddressStructure X_GPE0Block;
|
||||||
struct GenericAddressStructure X_GPE1Block;
|
struct GenericAddressStructure X_GPE1Block;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct BGRTHeader
|
struct BGRTHeader
|
||||||
{
|
{
|
||||||
@ -181,7 +181,7 @@ namespace ACPI
|
|||||||
uint32_t LocalControllerAddress;
|
uint32_t LocalControllerAddress;
|
||||||
uint32_t Flags;
|
uint32_t Flags;
|
||||||
char Entries[];
|
char Entries[];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
ACPIHeader *XSDT = nullptr;
|
ACPIHeader *XSDT = nullptr;
|
||||||
MCFGHeader *MCFG = nullptr;
|
MCFGHeader *MCFG = nullptr;
|
||||||
@ -209,7 +209,7 @@ namespace ACPI
|
|||||||
{
|
{
|
||||||
uint8_t Type;
|
uint8_t Type;
|
||||||
uint8_t Length;
|
uint8_t Length;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct MADTIOApic
|
struct MADTIOApic
|
||||||
{
|
{
|
||||||
@ -218,7 +218,7 @@ namespace ACPI
|
|||||||
uint8_t reserved;
|
uint8_t reserved;
|
||||||
uint32_t Address;
|
uint32_t Address;
|
||||||
uint32_t GSIBase;
|
uint32_t GSIBase;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct MADTIso
|
struct MADTIso
|
||||||
{
|
{
|
||||||
@ -227,7 +227,7 @@ namespace ACPI
|
|||||||
uint8_t IRQSource;
|
uint8_t IRQSource;
|
||||||
uint32_t GSI;
|
uint32_t GSI;
|
||||||
uint16_t Flags;
|
uint16_t Flags;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct MADTNmi
|
struct MADTNmi
|
||||||
{
|
{
|
||||||
@ -235,7 +235,7 @@ namespace ACPI
|
|||||||
uint8_t processor;
|
uint8_t processor;
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
uint8_t lint;
|
uint8_t lint;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct LocalAPIC
|
struct LocalAPIC
|
||||||
{
|
{
|
||||||
@ -243,7 +243,7 @@ namespace ACPI
|
|||||||
uint8_t ACPIProcessorId;
|
uint8_t ACPIProcessorId;
|
||||||
uint8_t APICId;
|
uint8_t APICId;
|
||||||
uint32_t Flags;
|
uint32_t Flags;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct LAPIC
|
struct LAPIC
|
||||||
{
|
{
|
||||||
|
@ -170,7 +170,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 14;
|
uint64_t Reserved2 : 14;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) LVTTimer;
|
} __packed LVTTimer;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -190,7 +190,7 @@ namespace APIC
|
|||||||
uint64_t Reserved1 : 19;
|
uint64_t Reserved1 : 19;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) Spurious;
|
} __packed Spurious;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -239,7 +239,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 12;
|
uint64_t Reserved2 : 12;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) InterruptCommandRegisterLow;
|
} __packed InterruptCommandRegisterLow;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -251,7 +251,7 @@ namespace APIC
|
|||||||
uint64_t Destination : 8;
|
uint64_t Destination : 8;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) InterruptCommandRegisterHigh;
|
} __packed InterruptCommandRegisterHigh;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -298,7 +298,7 @@ namespace APIC
|
|||||||
uint64_t High;
|
uint64_t High;
|
||||||
} split;
|
} split;
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) IOAPICRedirectEntry;
|
} __packed IOAPICRedirectEntry;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -310,7 +310,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 8;
|
uint64_t Reserved2 : 8;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) IOAPICVersion;
|
} __packed IOAPICVersion;
|
||||||
|
|
||||||
class APIC
|
class APIC
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,7 @@ namespace GlobalDescriptorTable
|
|||||||
* @details This bit must be 1 for all valid descriptors.
|
* @details This bit must be 1 for all valid descriptors.
|
||||||
*/
|
*/
|
||||||
uint8_t P : 1;
|
uint8_t P : 1;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
uint8_t Raw;
|
uint8_t Raw;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ namespace GlobalDescriptorTable
|
|||||||
* @details If the long mode bit is set, the segment is in 64-bit long mode.
|
* @details If the long mode bit is set, the segment is in 64-bit long mode.
|
||||||
*/
|
*/
|
||||||
uint8_t L : 1;
|
uint8_t L : 1;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
uint8_t Raw;
|
uint8_t Raw;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -101,18 +101,18 @@ namespace GlobalDescriptorTable
|
|||||||
/* HIGH */
|
/* HIGH */
|
||||||
uint32_t BaseUpper;
|
uint32_t BaseUpper;
|
||||||
uint32_t Reserved;
|
uint32_t Reserved;
|
||||||
} __attribute__((packed)) TaskStateSegmentEntry;
|
} __packed TaskStateSegmentEntry;
|
||||||
|
|
||||||
typedef struct _TaskStateSegment
|
typedef struct _TaskStateSegment
|
||||||
{
|
{
|
||||||
uint32_t Reserved0 __attribute__((aligned(16)));
|
uint32_t Reserved0 __aligned(0x10);
|
||||||
uint64_t StackPointer[3];
|
uint64_t StackPointer[3];
|
||||||
uint64_t Reserved1;
|
uint64_t Reserved1;
|
||||||
uint64_t InterruptStackTable[7];
|
uint64_t InterruptStackTable[7];
|
||||||
uint64_t Reserved2;
|
uint64_t Reserved2;
|
||||||
uint16_t Reserved3;
|
uint16_t Reserved3;
|
||||||
uint16_t IOMapBaseAddressOffset;
|
uint16_t IOMapBaseAddressOffset;
|
||||||
} __attribute__((packed)) TaskStateSegment;
|
} __packed TaskStateSegment;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableEntry
|
typedef struct _GlobalDescriptorTableEntry
|
||||||
{
|
{
|
||||||
@ -128,7 +128,7 @@ namespace GlobalDescriptorTable
|
|||||||
GlobalDescriptorTableFlags Flags;
|
GlobalDescriptorTableFlags Flags;
|
||||||
/** @brief High Base */
|
/** @brief High Base */
|
||||||
uint8_t BaseHigh;
|
uint8_t BaseHigh;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableEntry;
|
} __packed GlobalDescriptorTableEntry;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableEntries
|
typedef struct _GlobalDescriptorTableEntries
|
||||||
{
|
{
|
||||||
@ -138,7 +138,7 @@ namespace GlobalDescriptorTable
|
|||||||
GlobalDescriptorTableEntry UserData;
|
GlobalDescriptorTableEntry UserData;
|
||||||
GlobalDescriptorTableEntry UserCode;
|
GlobalDescriptorTableEntry UserCode;
|
||||||
TaskStateSegmentEntry TaskStateSegment;
|
TaskStateSegmentEntry TaskStateSegment;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableEntries;
|
} __packed GlobalDescriptorTableEntries;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableDescriptor
|
typedef struct _GlobalDescriptorTableDescriptor
|
||||||
{
|
{
|
||||||
@ -146,7 +146,7 @@ namespace GlobalDescriptorTable
|
|||||||
uint16_t Length;
|
uint16_t Length;
|
||||||
/** @brief GDT entries address */
|
/** @brief GDT entries address */
|
||||||
GlobalDescriptorTableEntries *Entries;
|
GlobalDescriptorTableEntries *Entries;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableDescriptor;
|
} __packed GlobalDescriptorTableDescriptor;
|
||||||
|
|
||||||
extern void *CPUStackPointer[];
|
extern void *CPUStackPointer[];
|
||||||
extern TaskStateSegment tss[];
|
extern TaskStateSegment tss[];
|
||||||
|
@ -48,13 +48,13 @@ namespace InterruptDescriptorTable
|
|||||||
uint64_t Present : 1;
|
uint64_t Present : 1;
|
||||||
uint64_t BaseHigh : 48;
|
uint64_t BaseHigh : 48;
|
||||||
uint64_t Reserved3 : 32;
|
uint64_t Reserved3 : 32;
|
||||||
} __attribute__((packed)) InterruptDescriptorTableEntry;
|
} __packed InterruptDescriptorTableEntry;
|
||||||
|
|
||||||
typedef struct _InterruptDescriptorTableDescriptor
|
typedef struct _InterruptDescriptorTableDescriptor
|
||||||
{
|
{
|
||||||
uint16_t Length;
|
uint16_t Length;
|
||||||
InterruptDescriptorTableEntry *Entries;
|
InterruptDescriptorTableEntry *Entries;
|
||||||
} __attribute__((packed)) InterruptDescriptorTableDescriptor;
|
} __packed InterruptDescriptorTableDescriptor;
|
||||||
|
|
||||||
void SetEntry(uint8_t Index, void (*Base)(), InterruptDescriptorTableFlags Attribute, uint8_t InterruptStackTable, InterruptDescriptorTableFlags Ring, uint16_t SegmentSelector);
|
void SetEntry(uint8_t Index, void (*Base)(), InterruptDescriptorTableFlags Attribute, uint8_t InterruptStackTable, InterruptDescriptorTableFlags Ring, uint16_t SegmentSelector);
|
||||||
void Init(int Core);
|
void Init(int Core);
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
volatile bool CPUEnabled = false;
|
volatile bool CPUEnabled = false;
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||||
static __attribute__((aligned(PAGE_SIZE))) CPUData CPUs[MAX_CPU] = {0};
|
static __aligned(0x1000) CPUData CPUs[MAX_CPU] = {0};
|
||||||
|
|
||||||
CPUData *GetCPU(uint64_t id) { return &CPUs[id]; }
|
CPUData *GetCPU(uint64_t id) { return &CPUs[id]; }
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 14;
|
uint64_t Reserved2 : 14;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) LVTTimer;
|
} __packed LVTTimer;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -190,7 +190,7 @@ namespace APIC
|
|||||||
uint64_t Reserved1 : 19;
|
uint64_t Reserved1 : 19;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) Spurious;
|
} __packed Spurious;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -239,7 +239,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 12;
|
uint64_t Reserved2 : 12;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) InterruptCommandRegisterLow;
|
} __packed InterruptCommandRegisterLow;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -251,7 +251,7 @@ namespace APIC
|
|||||||
uint64_t Destination : 8;
|
uint64_t Destination : 8;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) InterruptCommandRegisterHigh;
|
} __packed InterruptCommandRegisterHigh;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -298,7 +298,7 @@ namespace APIC
|
|||||||
uint64_t High;
|
uint64_t High;
|
||||||
} split;
|
} split;
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) IOAPICRedirectEntry;
|
} __packed IOAPICRedirectEntry;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -310,7 +310,7 @@ namespace APIC
|
|||||||
uint64_t Reserved2 : 8;
|
uint64_t Reserved2 : 8;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) IOAPICVersion;
|
} __packed IOAPICVersion;
|
||||||
|
|
||||||
class APIC
|
class APIC
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,7 @@ namespace GlobalDescriptorTable
|
|||||||
* @details This bit must be 1 for all valid descriptors.
|
* @details This bit must be 1 for all valid descriptors.
|
||||||
*/
|
*/
|
||||||
uint8_t P : 1;
|
uint8_t P : 1;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
uint8_t Raw;
|
uint8_t Raw;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ namespace GlobalDescriptorTable
|
|||||||
* @details If the long mode bit is set, the segment is in 64-bit long mode.
|
* @details If the long mode bit is set, the segment is in 64-bit long mode.
|
||||||
*/
|
*/
|
||||||
uint8_t L : 1;
|
uint8_t L : 1;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
uint8_t Raw;
|
uint8_t Raw;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -101,17 +101,17 @@ namespace GlobalDescriptorTable
|
|||||||
/* HIGH */
|
/* HIGH */
|
||||||
uint32_t BaseUpper;
|
uint32_t BaseUpper;
|
||||||
uint32_t Reserved;
|
uint32_t Reserved;
|
||||||
} __attribute__((packed)) TaskStateSegmentEntry;
|
} __packed TaskStateSegmentEntry;
|
||||||
|
|
||||||
typedef struct _TaskStateSegment
|
typedef struct _TaskStateSegment
|
||||||
{
|
{
|
||||||
uint32_t Reserved0 __attribute__((aligned(16)));
|
uint32_t Reserved0 __aligned(0x10);
|
||||||
uint64_t StackPointer[3];
|
uint64_t StackPointer[3];
|
||||||
uint64_t Reserved1;
|
uint64_t Reserved1;
|
||||||
uint64_t InterruptStackTable[7];
|
uint64_t InterruptStackTable[7];
|
||||||
uint16_t Reserved2;
|
uint16_t Reserved2;
|
||||||
uint16_t IOMapBaseAddressOffset;
|
uint16_t IOMapBaseAddressOffset;
|
||||||
} __attribute__((packed)) TaskStateSegment;
|
} __packed TaskStateSegment;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableEntry
|
typedef struct _GlobalDescriptorTableEntry
|
||||||
{
|
{
|
||||||
@ -127,7 +127,7 @@ namespace GlobalDescriptorTable
|
|||||||
GlobalDescriptorTableFlags Flags;
|
GlobalDescriptorTableFlags Flags;
|
||||||
/** @brief High Base */
|
/** @brief High Base */
|
||||||
uint8_t BaseHigh;
|
uint8_t BaseHigh;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableEntry;
|
} __packed GlobalDescriptorTableEntry;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableEntries
|
typedef struct _GlobalDescriptorTableEntries
|
||||||
{
|
{
|
||||||
@ -137,7 +137,7 @@ namespace GlobalDescriptorTable
|
|||||||
GlobalDescriptorTableEntry UserData;
|
GlobalDescriptorTableEntry UserData;
|
||||||
GlobalDescriptorTableEntry UserCode;
|
GlobalDescriptorTableEntry UserCode;
|
||||||
TaskStateSegmentEntry TaskStateSegment;
|
TaskStateSegmentEntry TaskStateSegment;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableEntries;
|
} __packed GlobalDescriptorTableEntries;
|
||||||
|
|
||||||
typedef struct _GlobalDescriptorTableDescriptor
|
typedef struct _GlobalDescriptorTableDescriptor
|
||||||
{
|
{
|
||||||
@ -145,7 +145,7 @@ namespace GlobalDescriptorTable
|
|||||||
uint16_t Length;
|
uint16_t Length;
|
||||||
/** @brief GDT entries address */
|
/** @brief GDT entries address */
|
||||||
GlobalDescriptorTableEntries *Entries;
|
GlobalDescriptorTableEntries *Entries;
|
||||||
} __attribute__((packed)) GlobalDescriptorTableDescriptor;
|
} __packed GlobalDescriptorTableDescriptor;
|
||||||
|
|
||||||
extern void *CPUStackPointer[];
|
extern void *CPUStackPointer[];
|
||||||
extern TaskStateSegment tss[];
|
extern TaskStateSegment tss[];
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
|
|
||||||
#include "../kernel.h"
|
#include "../kernel.h"
|
||||||
|
|
||||||
/* EXTERNC */ __attribute__((weak)) uintptr_t __stack_chk_guard = 0;
|
/* EXTERNC */ __weak uintptr_t __stack_chk_guard = 0;
|
||||||
|
|
||||||
EXTERNC __attribute__((weak, no_stack_protector)) uintptr_t __stack_chk_guard_init(void)
|
EXTERNC __weak __no_stack_protector uintptr_t __stack_chk_guard_init(void)
|
||||||
{
|
{
|
||||||
int MaxRetries = 0;
|
int MaxRetries = 0;
|
||||||
#if UINTPTR_MAX == UINT32_MAX
|
#if UINTPTR_MAX == UINT32_MAX
|
||||||
@ -44,7 +44,7 @@ Retry:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERNC __attribute__((constructor, no_stack_protector)) void __guard_setup(void)
|
EXTERNC __constructor __no_stack_protector void __guard_setup(void)
|
||||||
{
|
{
|
||||||
debug("StackGuard: __guard_setup");
|
debug("StackGuard: __guard_setup");
|
||||||
if (__stack_chk_guard == 0)
|
if (__stack_chk_guard == 0)
|
||||||
@ -52,7 +52,7 @@ EXTERNC __attribute__((constructor, no_stack_protector)) void __guard_setup(void
|
|||||||
debug("Stack guard value: %ld", __stack_chk_guard);
|
debug("Stack guard value: %ld", __stack_chk_guard);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERNC __attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
|
EXTERNC __weak __noreturn __no_stack_protector void __stack_chk_fail(void)
|
||||||
{
|
{
|
||||||
TaskingPanic();
|
TaskingPanic();
|
||||||
for (short i = 0; i < 10; i++)
|
for (short i = 0; i < 10; i++)
|
||||||
@ -80,7 +80,7 @@ EXTERNC __attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fai
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gcc-mirror/gcc/blob/master/libssp/ssp.c
|
// https://github.com/gcc-mirror/gcc/blob/master/libssp/ssp.c
|
||||||
EXTERNC __attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void)
|
EXTERNC __weak __noreturn __no_stack_protector void __chk_fail(void)
|
||||||
{
|
{
|
||||||
TaskingPanic();
|
TaskingPanic();
|
||||||
for (short i = 0; i < 10; i++)
|
for (short i = 0; i < 10; i++)
|
||||||
|
@ -745,7 +745,7 @@ EXTERNC int log2(unsigned int n)
|
|||||||
return log + (n >> 1);
|
return log + (n >> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERNC void __chk_fail(void) __attribute__((__noreturn__));
|
EXTERNC void __chk_fail(void) __noreturn;
|
||||||
|
|
||||||
__noreturn __always_inline static inline void __convert_chk_fail(void)
|
__noreturn __always_inline static inline void __convert_chk_fail(void)
|
||||||
{
|
{
|
||||||
|
@ -308,7 +308,7 @@ namespace CPU
|
|||||||
uint32_t Reserved2 : 32;
|
uint32_t Reserved2 : 32;
|
||||||
};
|
};
|
||||||
uint32_t raw;
|
uint32_t raw;
|
||||||
} __attribute__((packed)) EFER;
|
} __packed EFER;
|
||||||
|
|
||||||
// ! TODO: UNTESTED!
|
// ! TODO: UNTESTED!
|
||||||
typedef union DR7
|
typedef union DR7
|
||||||
@ -377,7 +377,7 @@ namespace CPU
|
|||||||
uint8_t st[8][16];
|
uint8_t st[8][16];
|
||||||
/** @brief XMM registers */
|
/** @brief XMM registers */
|
||||||
uint8_t xmm[16][16];
|
uint8_t xmm[16][16];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CPUID
|
* @brief CPUID
|
||||||
@ -445,7 +445,7 @@ namespace CPU
|
|||||||
uint32_t ApicBaseHi : 32;
|
uint32_t ApicBaseHi : 32;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) APIC_BASE;
|
} __packed APIC_BASE;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
@ -555,7 +555,7 @@ namespace CPU
|
|||||||
uint64_t Reserved2 : 32;
|
uint64_t Reserved2 : 32;
|
||||||
};
|
};
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
} __attribute__((packed)) EFER;
|
} __packed EFER;
|
||||||
|
|
||||||
// ! TODO: UNTESTED!
|
// ! TODO: UNTESTED!
|
||||||
typedef union DR7
|
typedef union DR7
|
||||||
@ -674,7 +674,7 @@ namespace CPU
|
|||||||
uint8_t st[8][16];
|
uint8_t st[8][16];
|
||||||
/** @brief XMM registers */
|
/** @brief XMM registers */
|
||||||
uint8_t xmm[16][16];
|
uint8_t xmm[16][16];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
SafeFunction static inline void lgdt(void *gdt)
|
SafeFunction static inline void lgdt(void *gdt)
|
||||||
{
|
{
|
||||||
|
@ -51,7 +51,7 @@ namespace Disk
|
|||||||
uint8_t CHSLast[3];
|
uint8_t CHSLast[3];
|
||||||
uint32_t LBAFirst;
|
uint32_t LBAFirst;
|
||||||
uint32_t Sectors;
|
uint32_t Sectors;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct MasterBootRecord
|
struct MasterBootRecord
|
||||||
{
|
{
|
||||||
@ -60,7 +60,7 @@ namespace Disk
|
|||||||
uint16_t Reserved;
|
uint16_t Reserved;
|
||||||
MasterBootRecordPartition Partitions[4];
|
MasterBootRecordPartition Partitions[4];
|
||||||
uint8_t Signature[2];
|
uint8_t Signature[2];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct GUIDPartitionTablePartition
|
struct GUIDPartitionTablePartition
|
||||||
{
|
{
|
||||||
@ -72,7 +72,7 @@ namespace Disk
|
|||||||
uint64_t EndLBA;
|
uint64_t EndLBA;
|
||||||
uint64_t Attributes;
|
uint64_t Attributes;
|
||||||
char Label[72];
|
char Label[72];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct GUIDPartitionTable
|
struct GUIDPartitionTable
|
||||||
{
|
{
|
||||||
@ -91,7 +91,7 @@ namespace Disk
|
|||||||
uint32_t PartCount;
|
uint32_t PartCount;
|
||||||
uint32_t EntrySize;
|
uint32_t EntrySize;
|
||||||
uint32_t PartCRC32;
|
uint32_t PartCRC32;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct PartitionTable
|
struct PartitionTable
|
||||||
{
|
{
|
||||||
|
@ -66,7 +66,7 @@ namespace VirtualFileSystem
|
|||||||
uint32_t HiddenSectors;
|
uint32_t HiddenSectors;
|
||||||
/** @brief Large sector count. This field is set if there are more than 65535 sectors in the volume, resulting in a value which does not fit in the Number of Sectors entry at 0x13. */
|
/** @brief Large sector count. This field is set if there are more than 65535 sectors in the volume, resulting in a value which does not fit in the Number of Sectors entry at 0x13. */
|
||||||
uint32_t Sectors32;
|
uint32_t Sectors32;
|
||||||
} __attribute__((__packed__));
|
} __packed;
|
||||||
|
|
||||||
FatType GetFATType(BIOSParameterBlock *bpb);
|
FatType GetFATType(BIOSParameterBlock *bpb);
|
||||||
FAT(void *partition);
|
FAT(void *partition);
|
||||||
|
@ -436,7 +436,7 @@ namespace Memory
|
|||||||
struct PageTable4
|
struct PageTable4
|
||||||
{
|
{
|
||||||
PageMapLevel4 Entries[511];
|
PageMapLevel4 Entries[511];
|
||||||
} __attribute__((aligned(0x1000)));
|
} __aligned(0x1000);
|
||||||
|
|
||||||
struct __packed PageMapLevel5
|
struct __packed PageMapLevel5
|
||||||
{
|
{
|
||||||
@ -446,7 +446,7 @@ namespace Memory
|
|||||||
struct PageTable5
|
struct PageTable5
|
||||||
{
|
{
|
||||||
PageMapLevel5 Entries[511];
|
PageMapLevel5 Entries[511];
|
||||||
} __attribute__((aligned(0x1000)));
|
} __aligned(0x1000);
|
||||||
|
|
||||||
class Physical
|
class Physical
|
||||||
{
|
{
|
||||||
|
@ -55,7 +55,7 @@ namespace NetworkARP
|
|||||||
uint32_t SenderIP;
|
uint32_t SenderIP;
|
||||||
uint48_t TargetMAC : 48;
|
uint48_t TargetMAC : 48;
|
||||||
uint32_t TargetIP;
|
uint32_t TargetIP;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct DiscoveredAddress
|
struct DiscoveredAddress
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,7 @@ namespace NetworkDHCP
|
|||||||
uint8_t ServerHostName[64];
|
uint8_t ServerHostName[64];
|
||||||
uint8_t BootFileName[128];
|
uint8_t BootFileName[128];
|
||||||
uint8_t Options[64];
|
uint8_t Options[64];
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
enum DHCPOperation
|
enum DHCPOperation
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@ namespace NetworkEthernet
|
|||||||
uint48_t DestinationMAC : 48;
|
uint48_t DestinationMAC : 48;
|
||||||
uint48_t SourceMAC : 48;
|
uint48_t SourceMAC : 48;
|
||||||
uint16_t Type;
|
uint16_t Type;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct EthernetPacket
|
struct EthernetPacket
|
||||||
{
|
{
|
||||||
|
@ -139,7 +139,7 @@ namespace NetworkNTP
|
|||||||
* @note Only when the NTP authentication scheme is used
|
* @note Only when the NTP authentication scheme is used
|
||||||
*/
|
*/
|
||||||
// uint32_t MessageAuthenticationCode;
|
// uint32_t MessageAuthenticationCode;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
class NTP : public NetworkUDP::UDPEvents
|
class NTP : public NetworkUDP::UDPEvents
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@ namespace NetworkUDP
|
|||||||
uint16_t DestinationPort;
|
uint16_t DestinationPort;
|
||||||
uint16_t Length;
|
uint16_t Length;
|
||||||
uint16_t Checksum;
|
uint16_t Checksum;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
struct UDPPacket
|
struct UDPPacket
|
||||||
{
|
{
|
||||||
|
@ -217,7 +217,7 @@ namespace PCI
|
|||||||
uint8_t StartBus;
|
uint8_t StartBus;
|
||||||
uint8_t EndBus;
|
uint8_t EndBus;
|
||||||
uint32_t Reserved;
|
uint32_t Reserved;
|
||||||
} __attribute__((packed));
|
} __packed;
|
||||||
|
|
||||||
class PCI
|
class PCI
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user