mirror of
https://github.com/vivier/EMILE.git
synced 2025-04-10 01:37:00 +00:00
functions to enter kernel with/without MMU
This commit is contained in:
parent
f962537ede
commit
3276cd118c
70
second/enter_kernel.c
Normal file
70
second/enter_kernel.c
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
*
|
||||
* (c) 2005 Laurent Vivier <LaurentVivier@wanadoo.fr>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "misc.h"
|
||||
#include "arch.h"
|
||||
#include "enter_kernel.h"
|
||||
|
||||
unsigned long enter_kernel;
|
||||
unsigned long end_enter_kernel;
|
||||
disable_cache_t disable_cache;
|
||||
|
||||
void enter_kernel_init(void)
|
||||
{
|
||||
#ifdef ARCH_M68K
|
||||
if (arch_type == gestalt68k)
|
||||
{
|
||||
if (mmu_type == gestalt68040MMU)
|
||||
{
|
||||
#ifdef USE_MMU040
|
||||
printf("Using 68040 MMU\n");
|
||||
enter_kernel = (unsigned long)enter_kernel040;
|
||||
end_enter_kernel = (unsigned long)&end_enter_kernel040;
|
||||
disable_cache = MMU040_disable_cache;
|
||||
#else
|
||||
error("68040 MMU is not supported");
|
||||
#endif
|
||||
}
|
||||
else if (mmu_type == gestalt68030MMU)
|
||||
{
|
||||
#ifdef USE_MMU030
|
||||
printf("Using 68030 MMU\n");
|
||||
enter_kernel = (unsigned long)enter_kernel030;
|
||||
end_enter_kernel = (unsigned long)&end_enter_kernel030;
|
||||
disable_cache = MMU030_disable_cache;
|
||||
#else
|
||||
error("68030 MMU is not supported");
|
||||
#endif
|
||||
}
|
||||
else if (mmu_type == gestalt68851)
|
||||
{
|
||||
error("MMU 68851 is not supported");
|
||||
}
|
||||
else if (mmu_type == gestaltNoMMU)
|
||||
{
|
||||
printf("No MMU detected\n");
|
||||
enter_kernel = (unsigned long)enter_kernelnoMMU;
|
||||
end_enter_kernel = (unsigned long)&end_enter_kernelnoMMU;
|
||||
disable_cache = noMMU_disable_cache;
|
||||
}
|
||||
else
|
||||
error("Unsupported MMU");
|
||||
}
|
||||
#endif
|
||||
#ifdef ARCH_PPC
|
||||
if (arch_type == gestaltPowerPC)
|
||||
{
|
||||
enter_kernel = NULL;
|
||||
end_enter_kernel = NULL;
|
||||
disable_cache = NULL;
|
||||
bootstrap_size = 0;
|
||||
}
|
||||
else
|
||||
error("EMILE doesn't support your architecture");
|
||||
#endif
|
||||
}
|
35
second/enter_kernel.h
Normal file
35
second/enter_kernel.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
*
|
||||
* (c) 2005 Laurent Vivier <LaurentVivier@wanadoo.fr>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __ENTER_KERNEL_H__
|
||||
#define __ENTER_KERNEL_H__
|
||||
|
||||
typedef void (*entry_t) (unsigned long , unsigned long , unsigned long, unsigned long );
|
||||
typedef void (*disable_cache_t) (void);
|
||||
|
||||
#include "enter_kernelnoMMU.h"
|
||||
#ifdef USE_MMU030
|
||||
#include "enter_kernel030.h"
|
||||
#include "MMU030.h"
|
||||
#endif
|
||||
#ifdef USE_MMU040
|
||||
#include "enter_kernel040.h"
|
||||
#include "MMU040.h"
|
||||
#endif
|
||||
#define PAGE_SHIFT 12
|
||||
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
||||
#define PAGE_MASK (~(PAGE_SIZE-1))
|
||||
|
||||
#ifdef ARCH_PPC
|
||||
#include "enter_kernelPPC.h"
|
||||
#endif
|
||||
|
||||
extern void enter_kernel_init(void);
|
||||
extern unsigned long enter_kernel;
|
||||
extern unsigned long end_enter_kernel;
|
||||
extern disable_cache_t disable_cache;
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user