filename | src/syscall.h |
changeset | 102:844a3f2a76ff |
next | 182:e3b513538548 |
author | nkeynes |
date | Mon Mar 13 12:38:39 2006 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Refactor bios into more generic syscall structure. Add initial hooks for dc-load functions |
file | annotate | diff | log | raw |
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00001.2 +++ b/src/syscall.h Mon Mar 13 12:38:39 2006 +00001.3 @@ -0,0 +1,71 @@1.4 +/**1.5 + * $Id: syscall.h,v 1.1 2006-03-13 12:38:34 nkeynes Exp $1.6 + *1.7 + * Generic syscall support - ability to add hooks into SH4 code to call out1.8 + * to the emu.1.9 + *1.10 + * Copyright (c) 2005 Nathan Keynes.1.11 + *1.12 + * This program is free software; you can redistribute it and/or modify1.13 + * it under the terms of the GNU General Public License as published by1.14 + * the Free Software Foundation; either version 2 of the License, or1.15 + * (at your option) any later version.1.16 + *1.17 + * This program is distributed in the hope that it will be useful,1.18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of1.19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1.20 + * GNU General Public License for more details.1.21 + */1.22 +#ifndef dream_syscall_H1.23 +#define dream_syscall_H 11.24 +1.25 +#include <stdint.h>1.26 +#include <glib/gtypes.h>1.27 +1.28 +#ifdef __cplusplus1.29 +extern "C" {1.30 +#endif1.31 +1.32 +1.33 +typedef void (*syscall_hook_func_t)( uint32_t hook_id );1.34 +1.35 +1.36 +/**1.37 + * Define a new hook without an indirect vector1.38 + */1.39 +void syscall_add_hook( uint32_t hook_id, syscall_hook_func_t hook );1.40 +1.41 +/**1.42 + * Define a new hook which indirects through the specified vector address1.43 + * (which must be somewhere in main SH4 ram).1.44 + */1.45 +void syscall_add_hook_vector( uint32_t hook_id, uint32_t vector_addr,1.46 + syscall_hook_func_t hook );1.47 +1.48 +/**1.49 + * Invoke a syscall from the SH41.50 + */1.51 +void syscall_invoke( uint32_t hook_id );1.52 +1.53 +/**1.54 + * Repatch all syscall vectors (eg in case of system reset)1.55 + */1.56 +void syscall_repatch_vectors( );1.57 +1.58 +/************************ Standard syscall hacks ************************/1.59 +1.60 +/**1.61 + * Install the BIOS emu hack into ram (sets the vectors at 8C0000B0 through1.62 + * 8C0000C0)1.63 + */1.64 +void bios_install( void );1.65 +1.66 +/**1.67 + * Install the DCLoad syscall hack1.68 + */1.69 +void dcload_install( void );1.70 +1.71 +#ifdef __cplusplus1.72 +}1.73 +#endif1.74 +#endif
.