parent
100f66966f
commit
f42ada6eca
@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "panic.h"
|
||||
|
||||
/* The enum is compared directly in assembly, so maintain integral values! */
|
||||
typedef enum
|
||||
{
|
||||
ARCH_CONTEXT_VARIANT_UNUSED = 0, /* Has not have saved a context */
|
||||
ARCH_CONTEXT_VARIANT_FAST = 1, /* Saved a fastpath context */
|
||||
ARCH_CONTEXT_VARIANT_SLOW = 2, /* Saved a slowpath context */
|
||||
ARCH_CONTEXT_VARIANT_RUNNING = 3 /* Context is executing and content is out of date */
|
||||
} arch_context_variant_t;
|
||||
|
||||
static inline char *
|
||||
arch_context_variant_print(arch_context_variant_t context)
|
||||
{
|
||||
switch (context) {
|
||||
case ARCH_CONTEXT_VARIANT_UNUSED:
|
||||
return "Unused";
|
||||
case ARCH_CONTEXT_VARIANT_FAST:
|
||||
return "Fast";
|
||||
case ARCH_CONTEXT_VARIANT_SLOW:
|
||||
return "Slow";
|
||||
case ARCH_CONTEXT_VARIANT_RUNNING:
|
||||
return "Running";
|
||||
default:
|
||||
panic("Encountered unexpected arch_context variant: %u\n", context);
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uint64_t reg_t;
|
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
/* Register context saved and restored on user-level, direct context switches. */
|
||||
typedef enum
|
||||
{
|
||||
UREG_SP = 0,
|
||||
UREG_IP = 1,
|
||||
UREG_COUNT
|
||||
} ureg_t;
|
Loading…
Reference in new issue