#pragma once

/* virtual memory rights */
#define VM_READ  (1 << 0)
#define VM_WRITE (1 << 1)
#define VM_EXEC  (1 << 2)

/* PMO types */
#define PMO_ANONYM 0
#define PMO_DATA   1

/* a thread's own process */
#define SELF_CAP   0

#define MAX_PRIO   255

/* magic numbers */
#define CHILD_THREAD_STACK_BASE         (0x10000000)
#define CHILD_THREAD_STACK_SIZE         (0x10000)
#define CHILD_THREAD_PRIO               (MAX_PRIO - 1)

#define MAIN_THREAD_STACK_BASE		(0x8000000)
#define MAIN_THREAD_STACK_SIZE		(0x10000)
#define MAIN_THREAD_PRIO		(MAX_PRIO - 1)

#define ROUND_UP(x, n)		(((x) + (n) - 1) & ~((n) - 1))
#define ROUND_DOWN(x, n)	((x) & ~((n) - 1))

#define PAGE_SIZE   0x1000