Embedded Xinu Operating System
An ongoing research project and educational operating system.
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Groups Pages
Macros | Functions
kexec.c File Reference
#include <interrupt.h>
#include <kernel.h>
#include <kexec.h>
#include <string.h>

Macros

#define COPY_KERNEL_ADDR   ((void*)(0x8000 - sizeof(copy_kernel)))
 

Functions

void stop_mmu (void)
 
void invalidate_tlbs (void)
 
syscall kexec (const void *kernel, uint size)
 

Function Documentation

syscall kexec ( const void *  kernel,
uint  size 
)

Kernel execute - Transfer control to a new kernel.

This is the Raspberry Pi implementation. In this implementation, the new kernel must be valid for the Raspberry Pi, including being linked to run at and having an entry point at address 0x8000.

Parameters
kernelPointer to the new kernel image loaded anywhere in memory.
sizeSize of the new kernel image in bytes.
Returns
This function never returns. If it somehow does, then something has gone horribly wrong.