Use prettier #defines for attributes
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#include <amd64/init.h>
|
#include <amd64/init.h>
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <limine/limine.h>
|
#include <limine/limine.h>
|
||||||
#include <mm/liballoc.h>
|
#include <mm/liballoc.h>
|
||||||
#include <mm/pmm.h>
|
#include <mm/pmm.h>
|
||||||
@@ -7,8 +8,7 @@
|
|||||||
|
|
||||||
#define UACPI_MEMORY_BUFFER_MAX 4096
|
#define UACPI_MEMORY_BUFFER_MAX 4096
|
||||||
|
|
||||||
__attribute__ ((
|
ALIGNED (16) static uint8_t uacpi_memory_buffer[UACPI_MEMORY_BUFFER_MAX];
|
||||||
aligned (16))) static uint8_t uacpi_memory_buffer[UACPI_MEMORY_BUFFER_MAX];
|
|
||||||
|
|
||||||
void bootmain (void) {
|
void bootmain (void) {
|
||||||
amd64_init ();
|
amd64_init ();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <amd64/init.h>
|
#include <amd64/init.h>
|
||||||
#include <amd64/intr.h>
|
#include <amd64/intr.h>
|
||||||
#include <amd64/tss.h>
|
#include <amd64/tss.h>
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <libk/std.h>
|
#include <libk/std.h>
|
||||||
#include <libk/string.h>
|
#include <libk/string.h>
|
||||||
|
|
||||||
@@ -23,23 +24,21 @@ struct gdt_entry {
|
|||||||
uint8_t access;
|
uint8_t access;
|
||||||
uint8_t gran;
|
uint8_t gran;
|
||||||
uint8_t basehigh;
|
uint8_t basehigh;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
struct gdt_ptr {
|
struct gdt_ptr {
|
||||||
uint16_t limit;
|
uint16_t limit;
|
||||||
uint64_t base;
|
uint64_t base;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
struct gdt_extended {
|
struct gdt_extended {
|
||||||
struct gdt_entry old[5];
|
struct gdt_entry old[5];
|
||||||
struct gdt_entry tsslow;
|
struct gdt_entry tsslow;
|
||||||
struct gdt_entry tsshigh;
|
struct gdt_entry tsshigh;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
/* clang-format off */
|
ALIGNED (16) static volatile uint8_t kernel_stack[KSTACK_SIZE];
|
||||||
__attribute__ ((aligned (16))) static volatile uint8_t kernel_stack[KSTACK_SIZE];
|
ALIGNED (16) static volatile struct gdt_extended gdt;
|
||||||
__attribute__ ((aligned (16))) static volatile struct gdt_extended gdt;
|
|
||||||
/* clang-format on */
|
|
||||||
|
|
||||||
static void amd64_gdt_set (volatile struct gdt_entry* ent, uint32_t base,
|
static void amd64_gdt_set (volatile struct gdt_entry* ent, uint32_t base,
|
||||||
uint32_t limit, uint8_t acc, uint8_t gran) {
|
uint32_t limit, uint8_t acc, uint8_t gran) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include <amd64/intr.h>
|
#include <amd64/intr.h>
|
||||||
#include <amd64/io.h>
|
#include <amd64/io.h>
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <libk/std.h>
|
#include <libk/std.h>
|
||||||
#include <libk/string.h>
|
#include <libk/string.h>
|
||||||
#include <sys/debug.h>
|
#include <sys/debug.h>
|
||||||
@@ -39,15 +40,14 @@ struct idt_entry {
|
|||||||
uint16_t intrmid;
|
uint16_t intrmid;
|
||||||
uint32_t intrhigh;
|
uint32_t intrhigh;
|
||||||
uint32_t resv;
|
uint32_t resv;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
struct idt {
|
struct idt {
|
||||||
uint16_t limit;
|
uint16_t limit;
|
||||||
uint64_t base;
|
uint64_t base;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
__attribute__ ((aligned (
|
ALIGNED (16) static volatile struct idt_entry idt_entries[IDT_ENTRIES_MAX];
|
||||||
16))) static volatile struct idt_entry idt_entries[IDT_ENTRIES_MAX];
|
|
||||||
static volatile struct idt idt;
|
static volatile struct idt idt;
|
||||||
|
|
||||||
extern void amd64_spin (void);
|
extern void amd64_spin (void);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#ifndef _KERNEL_AMD64_INTR_H
|
#ifndef _KERNEL_AMD64_INTR_H
|
||||||
#define _KERNEL_AMD64_INTR_H
|
#define _KERNEL_AMD64_INTR_H
|
||||||
|
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <libk/std.h>
|
#include <libk/std.h>
|
||||||
|
|
||||||
struct saved_regs {
|
struct saved_regs {
|
||||||
@@ -28,7 +29,7 @@ struct saved_regs {
|
|||||||
uint64_t rflags;
|
uint64_t rflags;
|
||||||
uint64_t rsp;
|
uint64_t rsp;
|
||||||
uint64_t ss;
|
uint64_t ss;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
void amd64_intr_init (void);
|
void amd64_intr_init (void);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <amd64/tss.h>
|
#include <amd64/tss.h>
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <libk/std.h>
|
#include <libk/std.h>
|
||||||
|
|
||||||
__attribute__ ((aligned (16))) static volatile struct tss tss;
|
ALIGNED (16) static volatile struct tss tss;
|
||||||
|
|
||||||
volatile struct tss* amd64_get_tss (void) { return &tss; }
|
volatile struct tss* amd64_get_tss (void) { return &tss; }
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#ifndef _KERNEL_AMD64_TSS_H
|
#ifndef _KERNEL_AMD64_TSS_H
|
||||||
#define _KERNEL_AMD64_TSS_H
|
#define _KERNEL_AMD64_TSS_H
|
||||||
|
|
||||||
|
#include <aux/compiler.h>
|
||||||
#include <libk/std.h>
|
#include <libk/std.h>
|
||||||
|
|
||||||
struct tss {
|
struct tss {
|
||||||
@@ -13,7 +14,7 @@ struct tss {
|
|||||||
uint64_t resv2;
|
uint64_t resv2;
|
||||||
uint16_t resv3;
|
uint16_t resv3;
|
||||||
uint16_t iopb_off;
|
uint16_t iopb_off;
|
||||||
} __attribute__ ((packed));
|
} PACKED;
|
||||||
|
|
||||||
volatile struct tss* amd64_get_tss (void);
|
volatile struct tss* amd64_get_tss (void);
|
||||||
|
|
||||||
|
|||||||
8
kernel/aux/compiler.h
Normal file
8
kernel/aux/compiler.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef _KERNEL_AUX_COMPILER_H
|
||||||
|
#define _KERNEL_AUX_COMPILER_H
|
||||||
|
|
||||||
|
#define PACKED __attribute__((packed))
|
||||||
|
#define ALIGNED(N) __attribute__((aligned((N))))
|
||||||
|
#define SECTION(name) __attribute__((section(name)))
|
||||||
|
|
||||||
|
#endif // _KERNEL_AUX_COMPILER_H
|
||||||
@@ -1,20 +1,19 @@
|
|||||||
|
#include <aux/compiler.h>
|
||||||
#include <limine/limine.h>
|
#include <limine/limine.h>
|
||||||
|
|
||||||
#define DECL_REQ(small, big) \
|
#define DECL_REQ(small, big) \
|
||||||
__attribute__ (( \
|
SECTION (".limine_requests") \
|
||||||
used, section (".limine_requests"))) struct limine_##small##_request \
|
struct limine_##small##_request limine_##small##_request = { \
|
||||||
limine_##small##_request = { \
|
|
||||||
.id = LIMINE_##big##_REQUEST_ID, .revision = 4}
|
.id = LIMINE_##big##_REQUEST_ID, .revision = 4}
|
||||||
|
|
||||||
__attribute__ ((used,
|
SECTION (".limine_requests")
|
||||||
section (".limine_requests"))) volatile uint64_t limine_base_revision[] =
|
volatile uint64_t limine_base_revision[] = LIMINE_BASE_REVISION (4);
|
||||||
LIMINE_BASE_REVISION (4);
|
|
||||||
|
|
||||||
__attribute__ ((used, section (".limine_requests_start"))) volatile uint64_t
|
SECTION (".limine_requests_start")
|
||||||
limine_requests_start_marker[] = LIMINE_REQUESTS_START_MARKER;
|
volatile uint64_t limine_requests_start_marker[] = LIMINE_REQUESTS_START_MARKER;
|
||||||
|
|
||||||
__attribute__ ((used, section (".limine_requests_end"))) volatile uint64_t
|
SECTION (".limine_requests_end")
|
||||||
limine_requests_end_marker[] = LIMINE_REQUESTS_END_MARKER;
|
volatile uint64_t limine_requests_end_marker[] = LIMINE_REQUESTS_END_MARKER;
|
||||||
|
|
||||||
DECL_REQ (hhdm, HHDM);
|
DECL_REQ (hhdm, HHDM);
|
||||||
DECL_REQ (memmap, MEMMAP);
|
DECL_REQ (memmap, MEMMAP);
|
||||||
|
|||||||
Reference in New Issue
Block a user