Query VideoCore for VMEM (needed for further MMU mapping)
[AROS.git] / compiler / include / aros / kernel.h
blob1c1172f05b469b68c8de21759d05c29291cdbe5a
1 #ifndef AROS_KERNEL_H
2 #define AROS_KERNEL_H
4 /*
5 Copyright � 1995-2011, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: TagItems for the kernel.resource
9 Lang: english
12 #include <aros/macros.h>
13 #include <utility/tagitem.h>
15 /* Type of scheduler. See KrnGetScheduler()/KrnSetScheduler() functions. */
16 typedef enum
18 SCHED_RR = 1 /* Old good round robin scheduler */
19 } KRN_SchedType;
21 /* Flags for KrnMapGlobal */
22 typedef enum
24 MAP_CacheInhibit = 0x0001,
25 MAP_WriteThrough = 0x0002,
26 MAP_Guarded = 0x0004,
28 MAP_Readable = 0x0100,
29 MAP_Writable = 0x0200,
30 MAP_Executable = 0x0400,
31 MAP_Supervisor = 0x0800
32 } KRN_MapAttr;
34 /* Tags for kernel boot message */
35 #define KRN_Dummy (TAG_USER + 0x03d00000)
36 #define KRN_KernelBase (KRN_Dummy + 1) /* Kickstart base address (start of code section) */
37 #define KRN_KernelLowest (KRN_Dummy + 2) /* Lowest kickstart address */
38 #define KRN_KernelHighest (KRN_Dummy + 3) /* Highest kickstart address */
39 #define KRN_KernelBss (KRN_Dummy + 4) /* (struct KernelBSS *) - BSS sections list */
40 #define KRN_GDT (KRN_Dummy + 5) /* Boot-time GDT address (x86-specific) */
41 #define KRN_IDT (KRN_Dummy + 6) /* Boot-time IDT address (x86-specific) */
42 #define KRN_PL4 (KRN_Dummy + 7) /* Base address of MMU control data */
43 #define KRN_VBEModeInfo (KRN_Dummy + 8) /* VBE mode information structure */
44 #define KRN_VBEControllerInfo (KRN_Dummy + 9) /* VBE controller information structure */
45 #define KRN_MMAPAddress (KRN_Dummy + 10) /* Address of memory map in multiboot format */
46 #define KRN_MMAPLength (KRN_Dummy + 11) /* Lenght of memory map */
47 #define KRN_CmdLine (KRN_Dummy + 12) /* Address of command line arguments */
48 #define KRN_ProtAreaStart (KRN_Dummy + 13) /* Start address of preallocated area */
49 #define KRN_ProtAreaEnd (KRN_Dummy + 14) /* End address of preallocated area */
50 #define KRN_VBEMode (KRN_Dummy + 15) /* Current VBE mode number */
51 #define KRN_VBEPaletteWidth (KRN_Dummy + 16) /* Current VBE palette width */
52 #define KRN_MEMLower (KRN_Dummy + 17) /* Amount of low memory in bytes (PC-specific) */
53 #define KRN_MEMUpper (KRN_Dummy + 18) /* Amount of upper memory in bytes (PC-specific) */
54 #define KRN_OpenFirmwareTree (KRN_Dummy + 19) /* Pointer to OpenFirmware device tree structure */
55 #define KRN_HostInterface (KRN_Dummy + 20) /* Pointer to host OS interface structure (hosted) */
56 #define KRN_DebugInfo (KRN_Dummy + 21) /* Kicksrart debug information, see debug.library */
57 #define KRN_BootLoader (KRN_Dummy + 22) /* Pointer to bootloader name string */
58 #define KRN_EFISystemTable (KRN_Dummy + 23) /* Pointer to EFI system table */
59 #define KRN_KernelStackBase (KRN_Dummy + 26) /* Kickstart Boot Task stack base address */
60 #define KRN_KernelStackSize (KRN_Dummy + 27) /* Kickstart Boot Task stack size */
61 #define KRN_VMEMLower (KRN_Dummy + 28) /* Lowest address of framebuffer, e.g. on embedded systems */
62 #define KRN_VMEMUpper (KRN_Dummy + 29) /* Highest address of framebuffer, e.g. on embedded systems */
64 /* Magic value passed by the bootstrap as second parameter */
65 #define AROS_BOOT_MAGIC AROS_MAKE_ID('A', 'R', 'O', 'S')
67 /* BSS segments descriptor */
68 struct KernelBSS
70 void *addr;
71 IPTR len;
74 /* Exception and IRQ handler types */
75 typedef int (*exhandler_t)(void *ctx, void *data, void *data2);
76 typedef void (*irqhandler_t)(void *data, void *data2);
78 /* System attributes */
79 #define KATTR_Architecture (TAG_USER + 0x03F00000) /* [.G] (char *) - Name of architecture, like "i386-pc" */
80 #define KATTR_PeripheralBase (TAG_USER + 0x03F00001) /* [.G] (IPTR) - SoC Peripheral IO base address (on relevant hardware) */
82 /* Tag IDs for KrnStatMemory() */
83 #define KMS_Free (TAG_USER + 0x04000000)
84 #define KMS_Total (TAG_USER + 0x04000001)
85 #define KMS_LargestAlloc (TAG_USER + 0x04000002)
86 #define KMS_SmallestAlloc (TAG_USER + 0x04000003)
87 #define KMS_LargestFree (TAG_USER + 0x04000004)
88 #define KMS_SmallestFree (TAG_USER + 0x04000005)
89 #define KMS_NumAlloc (TAG_USER + 0x04000006)
90 #define KMS_NumFree (TAG_USER + 0x04000007)
91 #define KMS_PageSize (TAG_USER + 0x04000008)
93 #endif /* AROS_KERNEL_H */