mirror of
https://github.com/vivier/EMILE.git
synced 2025-08-15 07:27:41 +00:00
68000: Set memory bank from KERNEL_LOADADDR to ScrnBase - 0x8000
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
#include "MMU040.h"
|
#include "MMU040.h"
|
||||||
#endif
|
#endif
|
||||||
#include "bank.h"
|
#include "bank.h"
|
||||||
|
#include "vga.h"
|
||||||
|
|
||||||
/* MacOS nanokernel data structures (nubus powerPC only)
|
/* MacOS nanokernel data structures (nubus powerPC only)
|
||||||
* found in Boot/X, thank you Ben ;-)
|
* found in Boot/X, thank you Ben ;-)
|
||||||
@@ -102,6 +103,13 @@ void m68k_init_memory_map()
|
|||||||
memory_map.bank_number = 0;
|
memory_map.bank_number = 0;
|
||||||
if (mmu_type == gestaltNoMMU)
|
if (mmu_type == gestaltNoMMU)
|
||||||
{
|
{
|
||||||
|
if (cpu_type == gestalt68000)
|
||||||
|
{
|
||||||
|
unsigned long start = KERNEL_BASEADDR;
|
||||||
|
unsigned long end = ScrnBase - 0x8000;
|
||||||
|
bank_add_mem(start, start, end - start);
|
||||||
|
}
|
||||||
|
else
|
||||||
bank_add_mem(0, 0, MemTop);
|
bank_add_mem(0, 0, MemTop);
|
||||||
}
|
}
|
||||||
else if (mmu_type == gestalt68040MMU)
|
else if (mmu_type == gestalt68040MMU)
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
/* physical memory information */
|
/* physical memory information */
|
||||||
|
|
||||||
#define MAX_MEM_MAP_SIZE 26
|
#define MAX_MEM_MAP_SIZE 26
|
||||||
|
#define KERNEL_BASEADDR 0x3000
|
||||||
|
|
||||||
typedef struct memory_bank {
|
typedef struct memory_bank {
|
||||||
unsigned long physAddr;
|
unsigned long physAddr;
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#define VIA1Base (*(unsigned long*)0x01D4)
|
#define VIA1Base (*(unsigned long*)0x01D4)
|
||||||
#define SCCRd (*(unsigned long*)0x01d8)
|
#define SCCRd (*(unsigned long*)0x01d8)
|
||||||
#define SCCWr (*(unsigned long*)0x01dc)
|
#define SCCWr (*(unsigned long*)0x01dc)
|
||||||
|
#define ScrnBase (*(unsigned long*)0x0824)
|
||||||
#define ROMBase (*(short**)0x02ae)
|
#define ROMBase (*(short**)0x02ae)
|
||||||
#define HWCfgFlags (*(unsigned long*)0x0B22)
|
#define HWCfgFlags (*(unsigned long*)0x0B22)
|
||||||
#define SCSIBase (*(unsigned long*)0x0C00)
|
#define SCSIBase (*(unsigned long*)0x0C00)
|
||||||
|
@@ -263,13 +263,6 @@ int start(emile_l2_header_t* info)
|
|||||||
|
|
||||||
/* set bootinfo at end of kernel image */
|
/* set bootinfo at end of kernel image */
|
||||||
|
|
||||||
if (mmu_type == gestaltNoMMU)
|
|
||||||
{
|
|
||||||
#define KERNEL_LOADADDR 0x3000
|
|
||||||
boot_info.memory[0].addr += KERNEL_LOADADDR;
|
|
||||||
boot_info.memory[0].size -= KERNEL_LOADADDR;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_kernel_bootinfo(kernel + info->kernel_size);
|
set_kernel_bootinfo(kernel + info->kernel_size);
|
||||||
|
|
||||||
/* compute final address of kernel */
|
/* compute final address of kernel */
|
||||||
@@ -279,7 +272,7 @@ int start(emile_l2_header_t* info)
|
|||||||
unsigned long size = end_enter_kernel - enter_kernel;
|
unsigned long size = end_enter_kernel - enter_kernel;
|
||||||
|
|
||||||
physImage = (unsigned long)kernel;
|
physImage = (unsigned long)kernel;
|
||||||
start_mem = KERNEL_LOADADDR + 0x1000;
|
start_mem = KERNEL_BASEADDR + 0x1000;
|
||||||
entry = (entry_t)(start_mem - size);
|
entry = (entry_t)(start_mem - size);
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
Reference in New Issue
Block a user