[Openmcl-cvs-notifications] r10931 - /trunk/source/lisp-kernel/x86-constants32.h
gb at clozure.com
gb at clozure.com
Tue Sep 30 20:10:56 EDT 2008
Author: gb
Date: Tue Sep 30 20:10:56 2008
New Revision: 10931
Log:
Add an "allocated" field to the x8632 TCR. Windows doesn't offer
a good way to align allocated memory, so we do it manually (and
use tcr.allocated to keep track of the pointer returned by =
malloc/calloc.)
Modified:
trunk/source/lisp-kernel/x86-constants32.h
Modified: trunk/source/lisp-kernel/x86-constants32.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-constants32.h (original)
+++ trunk/source/lisp-kernel/x86-constants32.h Tue Sep 30 20:10:56 2008
@@ -396,64 +396,65 @@
#define X8632_DEFAULT_NODE_REGS_MASK 0xce
=
typedef struct tcr {
- struct tcr *next;
- struct tcr *prev;
- natural node_regs_mask; /* bit set means correspnding reg contains nod=
e */
- struct tcr *linear;
+ struct tcr *next;
+ struct tcr *prev;
+ natural node_regs_mask; /* bit set means correspnding reg contains node =
*/
+ struct tcr *linear;
/* this spill area must be 16-byte aligned */
- LispObj save0; /* spill area for node registers */
- LispObj save1;
- LispObj save2;
- LispObj save3;
- LispObj *save_ebp; /* EBP when in foreign code */
- u32_t lisp_mxcsr;
- u32_t foreign_mxcsr;
- special_binding *db_link; /* special binding chain head */
- LispObj catch_top; /* top catch frame */
- LispObj *save_vsp; /* VSP when in foreign code */
- LispObj *save_tsp; /* TSP when in foreign code */
- LispObj *foreign_sp;
- struct area *cs_area; /* cstack area pointer */
- struct area *vs_area; /* vstack area pointer */
- struct area *ts_area; /* tstack area pointer */
- LispObj cs_limit; /* stack overflow limit */
- natural bytes_allocated;
- natural bytes_consed_high;
- natural log2_allocation_quantum; /* for per-thread consing */
- signed_natural interrupt_pending; /* pending interrupt flag */
- xframe_list *xframe; /* exception-frame linked list */
- int *errno_loc; /* per-thread (?) errno location */
- LispObj ffi_exception; /* fpscr bits from ff-call */
- LispObj osid; /* OS thread id */
- signed_natural valence; /* odd when in foreign code */
- signed_natural foreign_exception_status; /* non-zero -> call lisp_exit=
_hook */
- void *native_thread_info; /* platform-dependent */
- void *native_thread_id; /* mach_thread_t, pid_t, etc. */
- void *last_allocptr;
- void *save_allocptr;
- void *save_allocbase;
- void *reset_completion;
- void *activate;
- signed_natural suspend_count;
- ExceptionInformation *suspend_context;
- ExceptionInformation *pending_exception_context;
- void *suspend; /* suspension semaphore */
- void *resume; /* resumption semaphore */
- natural flags;
- ExceptionInformation *gc_context;
- void *termination_semaphore;
- signed_natural unwinding;
- natural tlb_limit;
- LispObj *tlb_pointer;
- natural shutdown_count;
- LispObj *next_tsp;
- void *safe_ref_address;
- sel_t ldt_selector;
- natural scratch_mxcsr;
- natural unboxed0;
- natural unboxed1;
- LispObj next_method_context; /* used in lieu of register */
- natural save_eflags;
+ LispObj save0; /* spill area for node registers */
+ LispObj save1;
+ LispObj save2;
+ LispObj save3;
+ LispObj *save_ebp; /* EBP when in foreign code */
+ u32_t lisp_mxcsr;
+ u32_t foreign_mxcsr;
+ special_binding *db_link; /* special binding chain head */
+ LispObj catch_top; /* top catch frame */
+ LispObj *save_vsp; /* VSP when in foreign code */
+ LispObj *save_tsp; /* TSP when in foreign code */
+ LispObj *foreign_sp;
+ struct area *cs_area; /* cstack area pointer */
+ struct area *vs_area; /* vstack area pointer */
+ struct area *ts_area; /* tstack area pointer */
+ LispObj cs_limit; /* stack overflow limit */
+ natural bytes_allocated;
+ natural bytes_consed_high;
+ natural log2_allocation_quantum; /* for per-thread consing */
+ signed_natural interrupt_pending; /* pending interrupt flag */
+ xframe_list *xframe; /* exception-frame linked list */
+ int *errno_loc; /* per-thread (?) errno location */
+ LispObj ffi_exception; /* fpscr bits from ff-call */
+ LispObj osid; /* OS thread id */
+ signed_natural valence; /* odd when in foreign code */
+ signed_natural foreign_exception_status; /* non-zero -> call lisp_exit_h=
ook */
+ void *native_thread_info; /* platform-dependent */
+ void *native_thread_id; /* mach_thread_t, pid_t, etc. */
+ void *last_allocptr;
+ void *save_allocptr;
+ void *save_allocbase;
+ void *reset_completion;
+ void *activate;
+ signed_natural suspend_count;
+ ExceptionInformation *suspend_context;
+ ExceptionInformation *pending_exception_context;
+ void *suspend; /* suspension semaphore */
+ void *resume; /* resumption semaphore */
+ natural flags;
+ ExceptionInformation *gc_context;
+ void *termination_semaphore;
+ signed_natural unwinding;
+ natural tlb_limit;
+ LispObj *tlb_pointer;
+ natural shutdown_count;
+ LispObj *next_tsp;
+ void *safe_ref_address;
+ sel_t ldt_selector;
+ natural scratch_mxcsr;
+ natural unboxed0;
+ natural unboxed1;
+ LispObj next_method_context; /* used in lieu of register */
+ natural save_eflags;
+ void *allocated;
} TCR;
=
#define nil_value (0x13000 + (fulltag_cons))
More information about the Openmcl-cvs-notifications
mailing list