diff options
Diffstat (limited to 'arch/nt32')
-rw-r--r-- | arch/nt32/psxglue.h | 63 | ||||
-rw-r--r-- | arch/nt32/src/crt_glue.c | 1 | ||||
-rw-r--r-- | arch/nt32/src/crt_tls.c | 1 | ||||
-rw-r--r-- | arch/nt32/src/syscall_disp.c | 1 | ||||
-rw-r--r-- | arch/nt32/src/vtbl.c | 2 |
5 files changed, 30 insertions, 38 deletions
diff --git a/arch/nt32/psxglue.h b/arch/nt32/psxglue.h index 0e4a440..5dbe57b 100644 --- a/arch/nt32/psxglue.h +++ b/arch/nt32/psxglue.h @@ -7,48 +7,23 @@ #define __PSXOPT_LDSO 0x4 #define __PSXOPT_VRFS 0x8 -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, const char ** pathv, int * status); -typedef int __ldso_dlclose(void *p); -typedef char * __ldso_dlerror(void); -typedef void __ldso_reset_tls(void); - -typedef int __psx_start_main(void *, int, char **, int (*)(void *, int, char **)); -typedef void __psx_convert_thread(void); -typedef void __psx_unmapself(void *, void *); -typedef long __psx_log_output(char *, signed int); - 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; + int (*dladdr) (const void * addr, void * info); + int (*dlinfo) (void * dso, int req, void * res); + void * (*dlsym) (void * p, const char * s, void * ra); + void * (*dlopen) (const char * file, int mode, const char ** pathv, int * status); + int (*dlclose) (void *p); + char * (*dlerror) (void); + void (*reset_tls) (void); }; struct __psx_vtbl { - void (*do_global_ctors_fn)(); - void (*do_global_dtors_fn)(); - __psx_start_main * start_main; - __psx_convert_thread * convert_thread; - __psx_unmapself * unmapself; - __psx_log_output * log_output; -}; - -struct __psx_context { - int size; - int options; - void ** sys_vtbl; - struct __ldso_vtbl * ldso_vtbl; - const struct __psx_vtbl*psx_vtbl; - unsigned int teb_sys_idx; - unsigned int teb_libc_idx; - void * pthread_surrogate_fn; - void * pthread_create_fn; + void (*do_global_ctors_fn) (); + void (*do_global_dtors_fn) (); + int (*start_main) (void *, int, char **, int (*)(void *, int, char **)); + void (*convert_thread) (void); + void (*unmapself) (void *, void *); + ssize_t (*log_output) (void *, ssize_t); }; struct __tlca_abi { @@ -59,6 +34,18 @@ struct __tlca_abi { char ** pthread_dtls; }; +struct __psx_context { + int size; + int options; + void ** sys_vtbl; + const struct __ldso_vtbl * ldso_vtbl; + const struct __psx_vtbl * psx_vtbl; + unsigned int teb_sys_idx; + unsigned int teb_libc_idx; + void * pthread_surrogate_fn; + void * pthread_create_fn; +}; + typedef int __psx_init_routine( int * argc, char *** argv, diff --git a/arch/nt32/src/crt_glue.c b/arch/nt32/src/crt_glue.c index 2967ad6..4925513 100644 --- a/arch/nt32/src/crt_glue.c +++ b/arch/nt32/src/crt_glue.c @@ -1,4 +1,5 @@ #include <unistd.h> +#include <stdint.h> #include <pthread.h> #include "atomic.h" #include "syscall.h" diff --git a/arch/nt32/src/crt_tls.c b/arch/nt32/src/crt_tls.c index da30de0..20080c6 100644 --- a/arch/nt32/src/crt_tls.c +++ b/arch/nt32/src/crt_tls.c @@ -1,3 +1,4 @@ +#include <unistd.h> #include <stdint.h> #include <stddef.h> #include "psxglue.h" diff --git a/arch/nt32/src/syscall_disp.c b/arch/nt32/src/syscall_disp.c index 3369ca0..9ea5966 100644 --- a/arch/nt32/src/syscall_disp.c +++ b/arch/nt32/src/syscall_disp.c @@ -1,3 +1,4 @@ +#include <unistd.h> #include <stdint.h> #include <stddef.h> #include "syscall.h" diff --git a/arch/nt32/src/vtbl.c b/arch/nt32/src/vtbl.c index aabd633..f21ce17 100644 --- a/arch/nt32/src/vtbl.c +++ b/arch/nt32/src/vtbl.c @@ -1,3 +1,5 @@ +#include <unistd.h> +#include <stdint.h> #include "psxglue.h" #include "errno.h" |