package embox.arch

@Mandatory
module system {
	option number core_freq
}

@Mandatory
@DefaultImpl(embox.arch.generic.onecpu)
abstract module cpu {
	option number cpu_count
}

@Mandatory
@DefaultImpl(embox.arch.generic.nommu)
abstract module mmu {
	option number page_size
}

@Mandatory
@DefaultImpl(embox.arch.generic.interrupt_stub)
abstract module interrupt { }

@Mandatory
@DefaultImpl(embox.arch.generic.nocontext)
abstract module context { }

@Mandatory
@DefaultImpl(embox.arch.generic.syscall_stub)
abstract module syscall { }

@Mandatory
@DefaultImpl(embox.arch.generic.nousermode)
abstract module usermode { }

@Mandatory
@DefaultImpl(embox.arch.generic.nosmp)
abstract module smp {
	option boolean independent_clock = false
}

@Mandatory
@DefaultImpl(embox.arch.generic.reg_stub)
abstract module reg { }

@Mandatory
@DefaultImpl(embox.arch.generic.cpu_idle_stub)
abstract module cpu_idle { }

@DefaultImpl(embox.arch.generic.cache_stub)
abstract module cache { }

@DefaultImpl(embox.arch.generic.no_libarch)
abstract module libarch { }

/* Deprecated */
abstract module arch { }

abstract module locore { }
abstract module entry { }
abstract module boot { }
abstract module lds { }
abstract module mmuinfo { }
abstract module mem_barriers { }
abstract module syscall_caller { }
abstract module stackframe { }
abstract module testtrap { }
abstract module cpu_info { }
abstract module vfork_entry { }
abstract module fork_entry { }
