2 Copyright � 1995-2013, The AROS Development Team. All rights reserved.
8 #define __KERNEL_NOLIBBASE__
10 #include <exec/execbase.h>
11 #include <exec/memory.h>
12 #include <exec/semaphores.h>
13 #include <aros/kernel.h>
15 /* Early declaration for ictl functions */
18 /* These two specify IRQ_COUNT and EXCEPTIONS_COUNT */
19 #include <kernel_arch.h>
20 #include <kernel_cpu.h>
22 /* Declare global variable at absolute address */
23 #define IMPORT_GLOBAL(var, addr) \
24 asm(".globl " # var "\n" \
25 ".set " # var ", " # addr )
27 /* Platform-specific stuff. Black box here. */
30 /* kernel.resource base. Nothing spectacular, really. */
34 struct MinList kb_Exceptions
[EXCEPTIONS_COUNT
];
35 struct List kb_Interrupts
[IRQ_COUNT
];
36 ULONG kb_ContextFlags
; /* Hints for KrnCreateContext() */
37 ULONG kb_ContextSize
; /* Total length of CPU context */
38 ULONG kb_PageSize
; /* Physical memory page size */
39 struct PlatformData
*kb_PlatformData
;
43 * Some useful global variables. They are global because:
44 * - BootMsg needs to be stored before KernelBase is allocated;
45 * - KernelBase is needed by interrupt handling code
47 extern struct TagItem
*BootMsg
;
48 extern struct KernelBase
*KernelBase
;
50 /* Allocation function */
51 struct KernelBase
*AllocKernelBase(struct ExecBase
*SysBase
);
53 /* Utility function to clear BSS segments. Call it before storing any globals!!! */
54 void __clear_bss(const struct KernelBSS
*bss
);
56 /* Memory header initialization functions */
57 void krnCreateMemHeader(CONST_STRPTR name
, BYTE pri
, APTR start
, IPTR size
, ULONG flags
);
58 struct MemHeader
*krnCreateROMHeader(CONST_STRPTR name
, APTR start
, APTR end
);
59 /* Memhry header - TLSF support functions */
60 void krnCreateTLSFMemHeader(CONST_STRPTR name
, BYTE pri
, APTR start
, IPTR size
, ULONG flags
);
61 struct MemHeader
* krnConvertMemHeaderToTLSF(struct MemHeader
* source
);