Dreamcast Architecture-Specific Options and high-level API
More...
|
file | arch.h |
| Dreamcast architecture specific options.
|
|
Dreamcast Architecture-Specific Options and high-level API
◆ _arch_mem_top
#define _arch_mem_top ((uint32) 0x8d000000) |
Top of memory available, depending on memory size.
◆ arch_fptr_next
#define arch_fptr_next |
( |
| fptr | ) |
(*((uint32*)((fptr)+4))) |
Pass in a frame pointer value to get the previous frame pointer for the given frame.
- Parameters
-
fptr | The frame pointer to look at. |
- Returns
- The previous frame pointer.
◆ arch_fptr_ret_addr
#define arch_fptr_ret_addr |
( |
| fptr | ) |
(*((uint32*)(fptr))) |
Pass in a frame pointer value to get the return address for the given frame.
- Parameters
-
fptr | The frame pointer to look at. |
- Returns
- The return address of the pointer.
◆ arch_get_fptr
#define arch_get_fptr |
( |
| ) |
|
Value: ({ \
__asm__ __volatile__("mov r14,%0\n" \
: "=&z" (fp) \
: \
: "memory" ); \
fp; })
unsigned long uint32
32-bit unsigned integer
Definition types.h:33
DC specific "function" to get the frame pointer from the current function.
- Returns
- The frame pointer from the current function.
- Note
- This only works if you don't disable frame pointers.
◆ arch_get_ret_addr
#define arch_get_ret_addr |
( |
| ) |
|
Value: ({ \
__asm__ __volatile__("sts pr,%0\n" \
: "=&z" (pr) \
: \
: "memory" ); \
pr; })
DC specific "function" to get the return address from the current function.
- Returns
- The return address of the current function.
◆ arch_sleep
Value: do { \
__asm__ __volatile__("sleep"); \
} while(0)
Dreamcast specific sleep mode "function".
◆ arch_valid_address
Returns true if the passed address is likely to be valid.
Doesn't have to be exact, just a sort of general idea.
- Returns
- Whether the address is valid or not for normal memory access.
◆ arch_valid_text_address
#define arch_valid_text_address |
( |
| ptr | ) |
((uintptr_t)(ptr) >= (uintptr_t)&_executable_start && (uintptr_t)(ptr) < (uintptr_t)&_etext) |
Returns true if the passed address is in the text section of your program.
- Returns
- Whether the address is valid or not for text memory access.
◆ DBL_MEM
Use this macro to easily determine if system has 32MB of RAM.
- Returns
- Non-zero if console has 32MB of RAM, zero otherwise
◆ DEFAULT_PIXEL_MODE
Default pixel mode for video.
◆ DEFAULT_SERIAL_BAUD
#define DEFAULT_SERIAL_BAUD 115200 |
◆ DEFAULT_SERIAL_FIFO
#define DEFAULT_SERIAL_FIFO 1 |
Default serial FIFO behavior.
◆ DEFAULT_VID_MODE
◆ ELF_SYM_PREFIX
#define ELF_SYM_PREFIX "_" |
Global symbol prefix in ELF files.
◆ ELF_SYM_PREFIX_LEN
#define ELF_SYM_PREFIX_LEN 1 |
Length of global symbol prefix in ELF files.
◆ HW_MEMSIZE
Determine how much memory is installed in current machine.
- Returns
- The total size of system memory in bytes.
◆ page_count
Page count "variable".
The number of pages is static, so we can optimize this quite a bit.
◆ page_phys_base
#define page_phys_base 0x8c010000 |
Base address of available physical pages.
◆ PAGEMASK
◆ PAGESIZE
◆ PAGESIZE_BITS
◆ THD_KERNEL_STACK_SIZE
#define THD_KERNEL_STACK_SIZE (64 * 1024) |
Main/kernel thread's stack size.
◆ THD_SCHED_HZ
Scheduler interrupt frequency.
Timer interrupt frequency for the KOS thread scheduler.
- Note
- This value is what KOS uses initially upon startup, but it can be reconfigured at run-time.
- See also
- thd_get_hz(), thd_set_hz()
◆ THD_STACK_SIZE
#define THD_STACK_SIZE 32768 |
Default thread stack size.
◆ __depr()
static const unsigned HZ __depr |
( |
"Please use the new THD_SCHED_HZ macro." | | ) |
|
|
static |
◆ arch_abort()
Kernel "abort" point.
- Note
- This function will never return!
◆ arch_exit()
Generic kernel "exit" point.
- Note
- This function will never return!
◆ arch_main()
Kernel C-level entry point.
- Note
- This function will never return!
◆ arch_menu()
Kernel "exit to menu" call.
- Note
- This function will never return!
◆ arch_panic()
void arch_panic |
( |
const char * | str | ) |
|
Panic function.
This function will cause a kernel panic, printing the specified message.
- Parameters
-
str | The error message to print. |
- Note
- This function will never return!
◆ arch_real_exit()
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.
- Note
- This function will never return!
◆ arch_reboot()
void arch_reboot |
( |
void | | ) |
|
Kernel "reboot" call.
- Note
- This function will never return!
◆ arch_return()
void arch_return |
( |
int | ret_code | ) |
|
Kernel "return" point.
- Note
- This function will never return!
◆ arch_set_exit_path()
void arch_set_exit_path |
( |
int | path | ) |
|
Set the exit path.
The default, if you don't call this, is ARCH_EXIT_RETURN.
- Parameters
-
- See also
- Exit Paths
◆ hardware_periph_init()
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.
- Return values
-
0 | On success (no error conditions defined). |
◆ hardware_shutdown()
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.
◆ hardware_sys_init()
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.
- Return values
-
0 | On success (no error conditions defined). |
◆ hardware_sys_mode()
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).
- Parameters
-
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. |
- Returns
- The console type (one of the Console Types).
◆ mm_init()
Initialize the memory management system.
- Return values
-
0 | On success (no error conditions defined). |
◆ mm_sbrk()
void * mm_sbrk |
( |
unsigned long | increment | ) |
|
Request more core memory from the system.
- Parameters
-
increment | The number of bytes requested. |
- Returns
- A pointer to the memory.
- Note
- This function will panic if no memory is available.
◆ _etext
◆ _executable_start
Start and End address for .text portion of program.