#include <aux/compiler.h>
#include <limine/limine.h>

#define DECL_REQ(small, big)                                                                       \
  SECTION (".limine_requests")                                                                     \
  struct limine_##small##_request limine_##small##_request = {.id = LIMINE_##big##_REQUEST_ID,     \
                                                              .revision = 4}

SECTION (".limine_requests")
volatile uint64_t limine_base_revision[] = LIMINE_BASE_REVISION (4);

SECTION (".limine_requests_start")
volatile uint64_t limine_requests_start_marker[] = LIMINE_REQUESTS_START_MARKER;

SECTION (".limine_requests_end")
volatile uint64_t limine_requests_end_marker[] = LIMINE_REQUESTS_END_MARKER;

DECL_REQ (hhdm, HHDM);
DECL_REQ (memmap, MEMMAP);
DECL_REQ (rsdp, RSDP);
DECL_REQ (mp, MP);
DECL_REQ (module, MODULE);
DECL_REQ (framebuffer, FRAMEBUFFER);
