version 1.2, 2008/07/20 20:49:10 |
version 1.4, 2008/07/22 15:36:08 |
|
|
/* |
/* |
|
* $Id$ |
|
*/ |
|
/* |
* Copyright (c) 2007, Kohsuke Ohtani |
* Copyright (c) 2007, Kohsuke Ohtani |
* All rights reserved. |
* All rights reserved. |
* |
* |
|
|
#define _CATS_PLATFORM_H |
#define _CATS_PLATFORM_H |
|
|
/* |
/* |
* Memory location |
* Memory locations. |
*/ |
*/ |
|
|
#define PAGE_OFFSET 0x00000000 |
#define PAGE_OFFSET 0x00000000 |
|
|
#define KERNEL_BASE 0x00200000 |
#define KERNEL_BASE 0x00100000 |
#define KERNEL_MAX 0x00400000 /* 2M */ |
#define KERNEL_MAX 0x00400000 |
#define USER_BASE 0x00400004 /* 2M + 4 */ |
#define USER_BASE 0x00400000 |
#define USER_MAX 0x02000000 /* 32M */ |
#define USER_MAX 0x02000000 |
|
|
#define BOOT_INFO 0x03f00000 /* 63M */ |
#define BOOT_INFO_SIZE 0x00000800 |
#define BOOT_STACK 0x03f00800 /* 63M + BOOT_INFO_SIZE */ |
#define BOOT_INFO (0x00100000 - BOOT_INFO_SIZE) |
#define INT_STACK 0x03f02800 /* BOOT_STACK + 8K */ |
#define BOOT_STACK 0x00002800 |
#define SYS_STACK 0x03f04800 /* INT_STACK + 8K */ |
#define INT_STACK 0x00004800 |
|
#define SYS_STACK 0x00008800 |
|
|
#ifndef __ASSEMBLY__ |
#ifndef __ASSEMBLY__ |
|
|
|
|
(((u_long)(addr) >= USER_BASE) && ((u_long)(addr) < USER_MAX)) |
(((u_long)(addr) >= USER_BASE) && ((u_long)(addr) < USER_MAX)) |
|
|
/* |
/* |
* Interrupt |
* Interrupt glue |
*/ |
*/ |
#define NIRQS 14 /* number of interrupt vectors */ |
#define NIRQS 32 /* number of interrupt vectors */ |
|
|
static __inline void |
static __inline void |
interrupt_enable(void) |
interrupt_enable(void) |
|
|
extern void clock_init(void); |
extern void clock_init(void); |
|
|
extern void diag_init(void); |
extern void diag_init(void); |
|
|
#ifdef CONFIG_DIAG_VBA |
|
static __inline void |
|
diag_print(char *buf) |
|
{ |
|
|
|
__asm__ __volatile__( |
|
"mov r0, %0\n\t" |
|
"swi 0xff0000\n\t" /* VBA emulator call */ |
|
: |
|
:"r" (buf) |
|
:"r0"); |
|
} |
|
|
|
#else |
|
extern void diag_print(char *); |
extern void diag_print(char *); |
#endif |
|
|
|
static __inline void |
static __inline void |
machine_idle(void) |
machine_idle(void) |
{ |
{ |
|
|
__asm__ __volatile__( |
|
"swi 0x20000\n\t" /* GBA BIOS call */ |
|
:::"r0", "r1", "r2", "r3"); |
|
} |
} |
|
|
static __inline void |
static __inline void |
machine_reset(void) |
machine_reset(void) |
{ |
{ |
|
|
__asm__ __volatile__( |
|
"swi 0\n\t" /* GBA BIOS call */ |
|
:::"r0", "r1", "r2", "r3"); |
|
} |
} |
|
|
extern void machine_init(void); |
extern void machine_init(void); |