Use prettier #defines for attributes

This commit is contained in:
2025-12-21 23:03:56 +01:00
parent b2d8294b12
commit c85cbd0c01
8 changed files with 36 additions and 27 deletions

View File

@@ -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 ();

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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; }

View File

@@ -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
View 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

View File

@@ -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);