#define JAILHOUSE_SIGNATURE "JAILHOUS"
+/**
+ * @ingroup Setup
+ * @{
+ */
+
+/**
+ * Hypervisor entry point.
+ *
+ * @see arch_entry
+ */
+typedef int (*jailhouse_entry)(unsigned int);
+
+/** Hypervisor description. */
struct jailhouse_header {
- /* filled at build time */
+ /** Signature "JAILHOUS".
+ * @note Filled at build time. */
char signature[8];
+ /** Size of hypervisor core, rounded up to page boundary.
+ * @note Filled at build time. */
unsigned long core_size;
+ /** Size of per-CPU data structure.
+ * @note Filled at build time. */
unsigned long percpu_size;
- unsigned long entry;
+ /** Entry point (arch_entry()).
+ * @note Filled at build time. */
+ int (*entry)(unsigned int);
- /* filled by loader */
- unsigned long size;
- unsigned long page_offset;
- unsigned int possible_cpus;
+ /** Configured maximum logical CPU ID + 1.
+ * @note Filled by Linux loader driver before entry. */
+ unsigned int max_cpus;
+ /** Number of online CPUs that will call the entry function.
+ * @note Filled by Linux loader driver before entry. */
unsigned int online_cpus;
+ /** Virtual base address of the debug console device (if used).
+ * @note Filled by Linux loader driver before entry. */
+ void *debug_console_base;
};
-
-typedef int (*entry_func)(unsigned int);