diff options
author | midipix <writeonce@midipix.org> | 2015-03-08 13:23:20 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2015-03-08 13:23:20 -0400 |
commit | 86062740f1e8eeb4c554055cf304dc1e0e87ea43 (patch) | |
tree | 35d8309221f4fd2050fefbc1b3b3957a1099ce8a /arch/nt64/psxglue.h | |
parent | 41058bd82ed2ae880c463d61e5702aef07681bf0 (diff) | |
download | mmglue-86062740f1e8eeb4c554055cf304dc1e0e87ea43.tar.bz2 mmglue-86062740f1e8eeb4c554055cf304dc1e0e87ea43.tar.xz |
initial commit of core port files.
signed-off by Z. Gilboa; see copying.midipix (9cd0746c) for additional information.
Diffstat (limited to 'arch/nt64/psxglue.h')
-rw-r--r-- | arch/nt64/psxglue.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/arch/nt64/psxglue.h b/arch/nt64/psxglue.h new file mode 100644 index 0000000..73ad2b0 --- /dev/null +++ b/arch/nt64/psxglue.h @@ -0,0 +1,63 @@ +#ifndef _PSXGLUE_H_ +#define _PSXGLUE_H_ + +#define __PSXOPT_NATIVE 0x0 +#define __PSXOPT_POSIX 0x1 +#define __PSXOPT_TTYDBG 0x2 +#define __PSXOPT_LDSO 0x4 + +typedef int __ldso_dladdr(const void * addr, void * info); +typedef int __ldso_dlinfo(void * dso, int req, void * res); +typedef void * __ldso_dlsym(void * p, const char * s, void * ra); +typedef void * __ldso_dlopen(const char * file, int mode); +typedef int __ldso_dlclose(void *p); +typedef char * __ldso_dlerror(void); +typedef void __ldso_reset_tls(void); + +typedef void __psx_convert_thread(void); +typedef void __psx_unmapself(void *, void *); +typedef void * __psx_get_osfhandle(int fd); + +struct __ldso_vtbl { + __ldso_dladdr * dladdr; + __ldso_dlinfo * dlinfo; + __ldso_dlsym * dlsym; + __ldso_dlopen * dlopen; + __ldso_dlclose * dlclose; + __ldso_dlerror * dlerror; + __ldso_reset_tls * reset_tls; +}; + +struct __psx_vtbl { + __psx_convert_thread * convert_thread; + __psx_unmapself * unmapself; + __psx_get_osfhandle * get_osfhandle; +}; + +struct __psx_context { + int size; + int options; + void *** sys_vtbl; + struct __ldso_vtbl * ldso_vtbl; + struct __psx_vtbl * psx_vtbl; + unsigned int teb_sys_idx; + unsigned int teb_libc_idx; + void * pthread_surrogate_fn; + void * pthread_create_fn; +}; + +struct __tlca { + void * pthread_self; + int * pthread_set_child_tid; + int * pthread_clear_child_tid; + char * pthread_tls; + char ***pthread_dtls; +}; + +typedef int __psx_init_routine( + int * argc, + char *** argv, + char *** envp, + struct __psx_context * ctx); + +#endif |