projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Further work towards use of win32 file HANDLEs
[sbcl.git]
/
src
/
runtime
/
x86-darwin-os.c
diff --git
a/src/runtime/x86-darwin-os.c
b/src/runtime/x86-darwin-os.c
index
fb57da5
..
323e549
100644
(file)
--- a/
src/runtime/x86-darwin-os.c
+++ b/
src/runtime/x86-darwin-os.c
@@
-44,10
+44,6
@@
void set_data_desc_addr(data_desc_t* desc, void* addr)
#endif
#endif
-#ifdef LISP_FEATURE_MACH_EXCEPTION_HANDLER
-kern_return_t mach_thread_init(mach_port_t thread_exception_port);
-#endif
-
int arch_os_thread_init(struct thread *thread) {
#ifdef LISP_FEATURE_SB_THREAD
int n;
int arch_os_thread_init(struct thread *thread) {
#ifdef LISP_FEATURE_SB_THREAD
int n;
@@
-79,7
+75,7
@@
int arch_os_thread_init(struct thread *thread) {
pthread_setspecific(specials,thread);
#endif
#ifdef LISP_FEATURE_MACH_EXCEPTION_HANDLER
pthread_setspecific(specials,thread);
#endif
#ifdef LISP_FEATURE_MACH_EXCEPTION_HANDLER
- mach_thread_init(THREAD_STRUCT_TO_EXCEPTION_PORT(thread));
+ mach_lisp_thread_init(thread);
#endif
#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
#endif
#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
@@
-274,7
+270,7
@@
void signal_emulation_wrapper(x86_thread_state32_t *thread_state,
/* Trap to restore the signal context. */
asm volatile (".long 0xffff0b0f"
/* Trap to restore the signal context. */
asm volatile (".long 0xffff0b0f"
- : : "a" (thread_state), "b" (float_state));
+ : : "a" (thread_state), "c" (float_state));
}
/* Convenience wrapper for the above */
}
/* Convenience wrapper for the above */
@@
-386,7
+382,6
@@
catch_exception_raise(mach_port_t exception_port,
exception_data_t code_vector,
mach_msg_type_number_t code_count)
{
exception_data_t code_vector,
mach_msg_type_number_t code_count)
{
- struct thread *th = (struct thread*) exception_port;
x86_thread_state32_t thread_state;
mach_msg_type_number_t state_count;
vm_address_t region_addr;
x86_thread_state32_t thread_state;
mach_msg_type_number_t state_count;
vm_address_t region_addr;
@@
-400,6
+395,10
@@
catch_exception_raise(mach_port_t exception_port,
siginfo_t siginfo;
kern_return_t ret, dealloc_ret;
siginfo_t siginfo;
kern_return_t ret, dealloc_ret;
+ struct thread *th;
+
+ FSHOW((stderr,"/entering catch_exception_raise with exception: %d\n", exception));
+ th = *(struct thread**)exception_port;
/* Get state and info */
state_count = x86_THREAD_STATE32_COUNT;
if ((ret = thread_get_state(thread,
/* Get state and info */
state_count = x86_THREAD_STATE32_COUNT;
if ((ret = thread_get_state(thread,
@@
-478,7
+477,7
@@
catch_exception_raise(mach_port_t exception_port,
lose("thread_set_state (x86_THREAD_STATE32) failed %d\n", ret);
if ((ret = thread_set_state(thread,
x86_FLOAT_STATE32,
lose("thread_set_state (x86_THREAD_STATE32) failed %d\n", ret);
if ((ret = thread_set_state(thread,
x86_FLOAT_STATE32,
- (thread_state_t)thread_state.EBX,
+ (thread_state_t)thread_state.ECX,
x86_FLOAT_STATE32_COUNT)) != KERN_SUCCESS)
lose("thread_set_state (x86_FLOAT_STATE32) failed %d\n", ret);
break;
x86_FLOAT_STATE32_COUNT)) != KERN_SUCCESS)
lose("thread_set_state (x86_FLOAT_STATE32) failed %d\n", ret);
break;