package embox.arch.x86.kernel

module context extends embox.arch.context {
	source "context.c", "context_switch.S", "context.h"
}

module locore {
	@NoRuntime depends entry
	@NoRuntime depends interrupt
	@NoRuntime depends cpu_idle
	@NoRuntime depends embox.arch.x86.boot.multiboot
}

module interrupt extends embox.arch.interrupt {
	source "irq_entry.S", "irq_handler.c", "ipl.c", "ipl_impl.h"

	@NoRuntime depends embox.kernel.critical
	@NoRuntime depends embox.compat.libc.assert
}

module entry {
	/* FIXME: Depends on kernel panic */
	source "exception_entry.S", "exception_handler.c"
	source "traps_core.c" /* Replace? */
}

module usermode extends embox.arch.usermode {
	source "tss.c", "usermode_entry.S"
}

@BuildDepends(third_party.lib.acpica)
module acpi_shutdown extends platform.platform_shutdown {
	source "acpi_shutdown.c"
	source "cpu_triple_reset.S"

	@NoRuntime depends third_party.lib.acpica
}

module cpu_idle extends embox.arch.cpu_idle {
	source "cpu_idle.h"
}
