KallistiOS git master
Independent SDK for the Sega Dreamcast
|
Dreamcast Architecture-Specific Options and high-level API More...
Topics | |
Byte Order | |
Byte-order management for the SH4 architecture | |
Console Types | |
Byte values returned by hardware_sys_mode() | |
Exit Paths | |
Potential exit paths from the kernel on arch_exit() | |
Memory Capacity | |
Console memory sizes | |
Region Codes | |
Values returned by hardware_sys_mode(); | |
Files | |
file | arch.h |
Dreamcast architecture specific options. | |
Macros | |
#define | _arch_mem_top ((uint32) 0x8d000000) |
Top of memory available, depending on memory size. | |
#define | PAGESIZE 4096 |
Page size (for MMU) | |
#define | PAGESIZE_BITS 12 |
Bits for page size. | |
#define | PAGEMASK (PAGESIZE - 1) |
Mask for page offset. | |
#define | page_count ((_arch_mem_top - page_phys_base) / PAGESIZE) |
Page count "variable". | |
#define | page_phys_base 0x8c010000 |
Base address of available physical pages. | |
#define | THD_SCHED_HZ 100 |
Scheduler interrupt frequency. | |
#define | THD_STACK_SIZE 32768 |
Default thread stack size. | |
#define | THD_KERNEL_STACK_SIZE (64 * 1024) |
Main/kernel thread's stack size. | |
#define | DEFAULT_VID_MODE DM_640x480 |
Default video mode. | |
#define | DEFAULT_PIXEL_MODE PM_RGB565 |
Default pixel mode for video. | |
#define | DEFAULT_SERIAL_BAUD 115200 |
Default serial bitrate. | |
#define | DEFAULT_SERIAL_FIFO 1 |
Default serial FIFO behavior. | |
#define | ELF_SYM_PREFIX "_" |
Global symbol prefix in ELF files. | |
#define | ELF_SYM_PREFIX_LEN 1 |
Length of global symbol prefix in ELF files. | |
#define | HW_MEMSIZE (_arch_mem_top - 0x8c000000) |
Determine how much memory is installed in current machine. | |
#define | DBL_MEM (_arch_mem_top - 0x8d000000) |
Use this macro to easily determine if system has 32MB of RAM. | |
Functions | |
static const unsigned HZ | __depr ("Please use the new THD_SCHED_HZ macro.") |
Legacy symbol for scheduler frequency. | |
void | arch_panic (const char *str) __noreturn |
Panic function. | |
void | arch_main (void) __noreturn |
Kernel C-level entry point. | |
void | arch_set_exit_path (int path) |
Set the exit path. | |
void | arch_exit (void) __noreturn |
Generic kernel "exit" point. | |
void | arch_return (int ret_code) __noreturn |
Kernel "return" point. | |
void | arch_abort (void) __noreturn |
Kernel "abort" point. | |
void | arch_reboot (void) __noreturn |
Kernel "reboot" call. | |
void | arch_menu (void) __noreturn |
Kernel "exit to menu" call. | |
int | mm_init (void) |
Initialize the memory management system. | |
void * | mm_sbrk (unsigned long increment) |
Request more core memory from the system. | |
void | arch_real_exit (int ret_code) __noreturn |
Jump back to the bootloader. | |
int | hardware_sys_init (void) |
Initialize bare-bones hardware systems. | |
int | hardware_periph_init (void) |
Initialize some peripheral systems. | |
void | hardware_shutdown (void) |
Shut down hardware that was initted. | |
int | hardware_sys_mode (int *region) |
Retrieve the system mode of the console in use. | |
static void | arch_sleep (void) |
Dreamcast specific sleep mode function. | |
static uintptr_t | arch_get_ret_addr (void) |
DC specific "function" to get the return address from the current function. | |
static uintptr_t | arch_get_fptr (void) |
DC specific "function" to get the frame pointer from the current function. | |
static uintptr_t | arch_fptr_ret_addr (uintptr_t fptr) |
Pass in a frame pointer value to get the return address for the given frame. | |
static uintptr_t | arch_fptr_next (uintptr_t fptr) |
Pass in a frame pointer value to get the previous frame pointer for the given frame. | |
static bool | arch_valid_address (uintptr_t ptr) |
Returns true if the passed address is likely to be valid. | |
static bool | arch_valid_text_address (uintptr_t ptr) |
Returns true if the passed address is in the text section of your program. | |
Variables | |
char | _executable_start |
Start and End address for .text portion of program. | |
char | _etext |
Dreamcast Architecture-Specific Options and high-level API
#define _arch_mem_top ((uint32) 0x8d000000) |
Top of memory available, depending on memory size.
Referenced by arch_valid_address().
#define DBL_MEM (_arch_mem_top - 0x8d000000) |
Use this macro to easily determine if system has 32MB of RAM.
#define DEFAULT_PIXEL_MODE PM_RGB565 |
Default pixel mode for video.
#define DEFAULT_SERIAL_BAUD 115200 |
Default serial bitrate.
#define DEFAULT_SERIAL_FIFO 1 |
Default serial FIFO behavior.
#define DEFAULT_VID_MODE DM_640x480 |
Default video mode.
#define ELF_SYM_PREFIX "_" |
Global symbol prefix in ELF files.
#define ELF_SYM_PREFIX_LEN 1 |
Length of global symbol prefix in ELF files.
#define HW_MEMSIZE (_arch_mem_top - 0x8c000000) |
Determine how much memory is installed in current machine.
#define page_count ((_arch_mem_top - page_phys_base) / PAGESIZE) |
Page count "variable".
The number of pages is static, so we can optimize this quite a bit.
#define page_phys_base 0x8c010000 |
Base address of available physical pages.
#define PAGEMASK (PAGESIZE - 1) |
Mask for page offset.
#define PAGESIZE 4096 |
Page size (for MMU)
#define PAGESIZE_BITS 12 |
Bits for page size.
#define THD_KERNEL_STACK_SIZE (64 * 1024) |
Main/kernel thread's stack size.
#define THD_SCHED_HZ 100 |
Scheduler interrupt frequency.
Timer interrupt frequency for the KOS thread scheduler.
#define THD_STACK_SIZE 32768 |
Default thread stack size.
|
static |
void arch_abort | ( | void | ) |
Kernel "abort" point.
void arch_exit | ( | void | ) |
Generic kernel "exit" point.
|
inlinestatic |
Pass in a frame pointer value to get the previous frame pointer for the given frame.
fptr | The frame pointer to look at. |
References arch_fptr_ret_addr().
|
inlinestatic |
Pass in a frame pointer value to get the return address for the given frame.
fptr | The frame pointer to look at. |
Referenced by arch_fptr_next().
|
inlinestatic |
DC specific "function" to get the frame pointer from the current function.
|
inlinestatic |
DC specific "function" to get the return address from the current function.
void arch_main | ( | void | ) |
Kernel C-level entry point.
void arch_menu | ( | void | ) |
Kernel "exit to menu" call.
void arch_panic | ( | const char * | str | ) |
Panic function.
This function will cause a kernel panic, printing the specified message.
str | The error message to print. |
void arch_real_exit | ( | int | ret_code | ) |
Jump back to the bootloader.
You generally shouldn't use this function, but rather use arch_exit() or exit() instead.
void arch_reboot | ( | void | ) |
Kernel "reboot" call.
void arch_return | ( | int | ret_code | ) |
Kernel "return" point.
void arch_set_exit_path | ( | int | path | ) |
Set the exit path.
The default, if you don't call this, is ARCH_EXIT_RETURN.
path | What arch_exit() should do. |
|
inlinestatic |
Dreamcast specific sleep mode function.
|
inlinestatic |
Returns true if the passed address is likely to be valid.
Doesn't have to be exact, just a sort of general idea.
References _arch_mem_top.
|
inlinestatic |
Returns true if the passed address is in the text section of your program.
References _etext, and _executable_start.
int hardware_periph_init | ( | void | ) |
Initialize some peripheral systems.
This will be done automatically for you on start by the default arch_main(), so you shouldn't have to deal with this yourself.
0 | On success (no error conditions defined). |
void hardware_shutdown | ( | void | ) |
Shut down hardware that was initted.
This function will shut down anything initted with hardware_sys_init() and hardware_periph_init(). This will be done for you automatically by the various exit points, so you shouldn't have to do this yourself.
int hardware_sys_init | ( | void | ) |
Initialize bare-bones hardware systems.
This will be done automatically for you on start by the default arch_main(), so you shouldn't have to deal with this yourself.
0 | On success (no error conditions defined). |
int hardware_sys_mode | ( | int * | region | ) |
Retrieve the system mode of the console in use.
This function retrieves the system mode register of the console that is in use. This register details the actual system type in use (and in some system types the region of the device).
region | On return, the region code (one of the Region Codes) of the device if the console type allows reading it through the system mode register – otherwise, you must retrieve the region from the flashrom. |
int mm_init | ( | void | ) |
Initialize the memory management system.
0 | On success (no error conditions defined). |
void * mm_sbrk | ( | unsigned long | increment | ) |
Request more core memory from the system.
increment | The number of bytes requested. |
|
extern |
Referenced by arch_valid_text_address().
|
extern |
Start and End address for .text portion of program.
Referenced by arch_valid_text_address().