source: trunk/source/lisp-kernel/x86-constants32.s @ 14619

Last change on this file since 14619 was 14619, checked in by rme, 8 years ago

Merge shrink-tcr branch. This enables the 32-bit Windows lisp to run
on 64-bit Windows.

On 32-bit x86 ports, we expect to use a segment register to point to a
block of thread-local data called the TCR (thread context record).
This has always been kind of a bother on 32-bit Windows: we have been
using a kludge that allows us to use the %es segment register
(conditionalized on WIN32_ES_HACK).

Unfortunately, 64-bit Windows doesn't support using an LDT. This is
why the 32-bit lisp wouldn't run on 64-bit Windows.

The new scheme is to use some of the TlsSlots? (part of the Windows
TEB) for the most important parts of the TCR, and to introduce an "aux
vector" for the remaining TCR slots. Since %fs points to the TEB, we
can make this work. We reserve the last 34 (of 64) slots for our use,
and will die if we don't get them.

Microsoft's documentation says not to access the TlsSlots? directly
(you're supposed to use TlsGetValue/TlsSetValue?), so we're treading on
undocumented ground. Frankly, we've done worse.

This change introduces some ugliness. In lisp kernel C files, there's
a TCR_AUX(tcr) macro that expands to "tcr->aux" on win32, and to "tcr"
elsewhere.

If lisp or lap code has a pointer to a TCR, it's necessary to subtract
off target::tcr-bias (which on Windows/x86 is #xe10, the offset from
%fs to the TlsSlots? in the Windows TEB). We also sometimes have to load
target::tcr.aux to get at data which has been moved there.

These changes should only affect Windows/x86. The story on the other
platforms is just the same as before.

File size: 19.2 KB
Line 
1define(`eax_l',`eax')
2define(`ecx_l',`ecx')
3define(`edx_l',`edx')
4define(`ebx_l',`ebx')
5define(`esi_l',`esi')
6define(`edi_l',`edi')
7
8define(`eax_b',`al')
9define(`ecx_b',`cl')
10define(`edx_b',`dl')
11define(`ebx_b',`bl')
12
13define(`imm0',`eax')
14        define(`imm0_l',`eax')
15        define(`imm0_w',`ax')
16        define(`imm0_b',`al')
17        define(`imm0_bh',`ah')
18        define(`Rimm0',`0')
19
20define(`temp0',`ecx')
21        define(`temp0_l',`ecx')
22        define(`temp0_w',`cx')
23        define(`temp0_b',`cl')
24        define(`temp0_bh',`ch')
25        define(`Rtemp0',`1')
26
27define(`temp1',`edx')
28        define(`temp1_l',`edx')
29        define(`temp1_w',`dx')
30        define(`temp1_b',`dl')
31        define(`temp1_bh',`dh')
32        define(`Rtemp1',`2')
33
34define(`arg_z',`ebx')
35        define(`arg_z_l',`ebx')
36        define(`arg_z_w',`bx')
37        define(`arg_z_b',`bl')
38        define(`arg_z_bh',`bh')
39        define(`Rarg_z',`3')
40
41define(`arg_y',`esi')
42        define(`Rarg_y',`6')
43
44define(`fn',`edi')
45        define(`Rfn',`7')
46
47define(`rcontext_reg',`fs')
48       
49define(`rcontext',`%rcontext_reg:$1')
50
51define(`fname',`temp0')
52define(`allocptr',`temp0')
53
54define(`nargs',`temp1')
55define(`nargs_w',`temp1_w')
56
57define(`ra0',`temp0')
58define(`xfn',`temp1')
59
60define(`allocptr',`temp0')
61define(`stack_temp',`mm7')
62
63define(`fp0',`xmm0')           
64define(`fp1',`xmm1')           
65define(`fp2',`xmm2')           
66define(`fp3',`xmm3')           
67define(`fp4',`xmm4')           
68define(`fp5',`xmm5')           
69define(`fp6',`xmm6')           
70define(`fp7',`xmm7')           
71define(`fpzero',`fp7')
72
73nbits_in_word = 32
74nbits_in_byte = 8
75ntagbits = 3
76nlisptagbits = 2
77nfixnumtagbits = 2
78num_subtag_bits = 8
79subtag_shift = num_subtag_bits
80fixnumshift = 2
81fixnum_shift = 2
82fulltagmask = 7
83tagmask = 3
84fixnummask = 3
85ncharcodebits = 8
86charcode_shift = 8
87word_shift = 2
88node_size = 4
89dnode_size = 8
90dnode_align_bits = 3
91dnode_shift = dnode_align_bits       
92bitmap_shift = 5
93
94fixnumone = (1<<fixnumshift)
95fixnum_one = fixnumone
96fixnum1 = fixnumone
97
98nargregs = 2
99
100tag_fixnum = 0
101tag_list = 1
102tag_misc = 2
103tag_imm = 3
104
105fulltag_even_fixnum = 0
106fulltag_cons = 1
107fulltag_nodeheader = 2
108fulltag_imm = 3
109fulltag_odd_fixnum = 4
110fulltag_tra = 5
111fulltag_misc = 6
112fulltag_immheader = 7
113
114define(`define_subtag',`subtag_$1 = ($2 | ($3 << ntagbits))')
115define(`define_imm_subtag',`define_subtag($1,fulltag_immheader,$2)')
116define(`define_node_subtag',`define_subtag($1,fulltag_nodeheader,$2)')
117
118define_imm_subtag(bignum,0)
119min_numeric_subtag = subtag_bignum
120define_node_subtag(ratio,1)
121max_rational_subtag = subtag_ratio
122define_imm_subtag(single_float,1)
123define_imm_subtag(double_float,2)
124min_float_subtag = subtag_single_float
125max_float_subtag = subtag_double_float
126max_real_subtag = subtag_double_float
127define_node_subtag(complex,3)
128max_numeric_subtag = subtag_complex
129
130define_imm_subtag(bit_vector,31)
131define_imm_subtag(double_float_vector,30)
132define_imm_subtag(s16_vector,29)
133define_imm_subtag(u16_vector,28)
134min_16_bit_ivector_subtag = subtag_u16_vector
135max_16_bit_ivector_subtag = subtag_s16_vector
136define_imm_subtag(s8_vector,26)
137define_imm_subtag(u8_vector,25)
138min_8_bit_ivector_subtag = subtag_u8_vector
139max_8_bit_ivector_subtag = fulltag_immheader|(27<<ntagbits)
140define_imm_subtag(simple_base_string,24)
141define_imm_subtag(fixnum_vector,23)
142define_imm_subtag(s32_vector,22)
143define_imm_subtag(u32_vector,21)
144define_imm_subtag(single_float_vector,20)
145max_32_bit_ivector_subtag = fulltag_immheader|(24<<ntagbits)
146min_cl_ivector_subtag = subtag_single_float_vector
147
148define_node_subtag(arrayH,19)
149define_node_subtag(vectorH,20)
150define_node_subtag(simple_vector,21)
151min_vector_subtag = subtag_vectorH
152min_array_subtag = subtag_arrayH
153
154define_imm_subtag(macptr,3)
155min_non_numeric_imm_subtag = subtag_macptr
156define_imm_subtag(dead_macptr,4)
157define_imm_subtag(xcode_vector,7)
158
159define_subtag(unbound,fulltag_imm,6)
160unbound_marker = subtag_unbound
161undefined = unbound_marker
162define_subtag(character,fulltag_imm,9)
163define_subtag(slot_unbound,fulltag_imm,10)
164slot_unbound_marker = subtag_slot_unbound
165define_subtag(illegal,fulltag_imm,11)
166illegal = subtag_illegal
167define_subtag(reserved_frame,fulltag_imm,29)
168reserved_frame_marker = subtag_reserved_frame
169define_subtag(no_thread_local_binding,fulltag_imm,30)
170no_thread_local_binding_marker = subtag_no_thread_local_binding
171define_subtag(function_boundary_marker,fulltag_imm,31)
172function_boundary_marker = subtag_function_boundary_marker
173
174max_non_array_imm_subtag = (18<<ntagbits)|fulltag_immheader
175
176define_node_subtag(catch_frame,4)
177define_node_subtag(function,5)
178define_node_subtag(basic_stream,6)
179define_node_subtag(symbol,7)
180define_node_subtag(lock,8)
181define_node_subtag(hash_vector,9)
182define_node_subtag(pool,10)
183define_node_subtag(weak,11)
184define_node_subtag(package,12)
185define_node_subtag(slot_vector,13)
186define_node_subtag(instance,14)
187define_node_subtag(struct,15)
188define_node_subtag(istruct,16)
189define_node_subtag(value_cell,17)
190define_node_subtag(xfunction,18)
191
192max_non_array_node_subtag = (18<<ntagbits)|fulltag_immheader
193
194misc_header_offset = -fulltag_misc
195misc_subtag_offset = misc_header_offset
196misc_data_offset = misc_header_offset+node_size
197misc_dfloat_offset = misc_header_offset+8
198
199nil_value = ((0x13000 + fulltag_cons)+(LOWMEM_BIAS))
200t_value = ((0x13008 + fulltag_misc)+(LOWMEM_BIAS))
201t_offset = (t_value-nil_value)
202misc_bias = fulltag_misc
203cons_bias = fulltag_cons
204
205        _struct(cons,-cons_bias)
206         _node(cdr)
207         _node(car)
208        _ends
209
210        _structf(ratio)
211         _node(numer)
212         _node(denom)
213        _endstructf
214
215        _structf(single_float)
216         _word(value)
217        _endstructf
218
219        _structf(double_float)
220         _word(pad)
221         _dword(value)
222        _endstructf
223
224        _structf(macptr)
225         _node(address)
226         _node(domain)
227         _node(type)
228        _endstructf
229
230        _structf(catch_frame)
231         _node(catch_tag)  /* #<unbound> -> unwind-protect, else catch */
232         _node(link)       /* backpointer to previous catch frame */
233         _node(mvflag)     /* 0 if single-valued catch, fixnum 1 otherwise */
234         _node(esp)        /* saved lisp esp */
235         _node(ebp)        /* saved lisp ebp */
236         _node(foreign_sp) /* necessary? */
237         _node(db_link)    /* head of special-binding chain */
238         _node(xframe)     /* exception frame chain */
239         _node(pc)         /* TRA of catch exit or cleanup form */
240        _endstructf
241
242        _struct(_function,-misc_bias)
243         _node(header)
244         _node(codevector)
245        _ends
246
247        _struct(tsp_frame,0)
248         _node(backlink)
249         _node(save_ebp)
250         _struct_label(fixed_overhead)
251         _struct_label(data_offset)
252        _ends
253
254        _struct(csp_frame,0)
255         _node(backlink)
256         _node(save_ebp)
257         _struct_label(fixed_overhead)
258         _struct_label(data_offset)
259        _ends
260
261        _structf(symbol)
262         _node(pname)
263         _node(vcell)
264         _node(fcell)
265         _node(package_predicate)
266         _node(flags)
267         _node(plist)
268         _node(binding_index)
269        _endstructf
270
271        _structf(vectorH)
272         _node(logsize)
273         _node(physsize)
274         _node(data_vector)
275         _node(displacement)
276         _node(flags)
277        _endstructf     
278
279        _structf(arrayH)
280         _node(rank)
281         _node(physsize)
282         _node(data_vector)
283         _node(displacement)
284         _node(flags)
285         _struct_label(dim0)       
286        _endstructf     
287
288        _struct(lisp_frame,0)
289         _node(backlink)
290         _node(savera0)
291        _ends
292
293        _struct(vector,-fulltag_misc)
294         _node(header)
295         _struct_label(data)
296        _ends
297
298        _struct(binding,0)
299         _node(link)
300         _node(sym)
301         _node(val)
302        _ends
303
304symbol_extra = symbol.size-fulltag_misc
305
306        _struct(nrs,(0x13008+(LOWMEM_BIAS)))
307         _struct_pad(fulltag_misc)
308         _struct_label(tsym)
309         _struct_pad(symbol_extra)      /* t */
310
311         _struct_pad(fulltag_misc)
312         _struct_label(nilsym)
313         _struct_pad(symbol_extra)      /* nil */
314
315         _struct_pad(fulltag_misc)
316         _struct_label(errdisp)
317         _struct_pad(symbol_extra)      /* %err-disp */
318
319         _struct_pad(fulltag_misc)
320         _struct_label(cmain)
321         _struct_pad(symbol_extra)      /* cmain */
322
323         _struct_pad(fulltag_misc)
324         _struct_label(eval)
325         _struct_pad(symbol_extra)      /* eval */
326 
327         _struct_pad(fulltag_misc)
328         _struct_label(appevalfn)
329         _struct_pad(symbol_extra)      /* apply-evaluated-function */
330
331         _struct_pad(fulltag_misc)
332         _struct_label(error)
333         _struct_pad(symbol_extra)      /* error */
334
335         _struct_pad(fulltag_misc)
336         _struct_label(defun)
337         _struct_pad(symbol_extra)      /* %defun */
338
339         _struct_pad(fulltag_misc)
340         _struct_label(defvar)
341         _struct_pad(symbol_extra)      /* %defvar */
342
343         _struct_pad(fulltag_misc)
344         _struct_label(defconstant)
345         _struct_pad(symbol_extra)      /* %defconstant */
346
347         _struct_pad(fulltag_misc)
348         _struct_label(macrosym)
349         _struct_pad(symbol_extra)      /* %macro */
350
351         _struct_pad(fulltag_misc)
352         _struct_label(kernelrestart)
353         _struct_pad(symbol_extra)      /* %kernel-restart */
354
355         _struct_pad(fulltag_misc)
356         _struct_label(package)
357         _struct_pad(symbol_extra)      /* *package* */
358
359         _struct_pad(fulltag_misc)
360         _struct_label(total_bytes_freed)
361         _struct_pad(symbol_extra)      /* *total-bytes-freed* */
362
363         _struct_pad(fulltag_misc)
364         _struct_label(kallowotherkeys)
365         _struct_pad(symbol_extra)      /* allow-other-keys */
366
367         _struct_pad(fulltag_misc)
368         _struct_label(toplcatch)
369         _struct_pad(symbol_extra)      /* %toplevel-catch% */
370
371         _struct_pad(fulltag_misc)
372         _struct_label(toplfunc)
373         _struct_pad(symbol_extra)      /* %toplevel-function% */
374
375         _struct_pad(fulltag_misc)
376         _struct_label(callbacks)
377         _struct_pad(symbol_extra)      /* %pascal-functions% */
378
379         _struct_pad(fulltag_misc)
380         _struct_label(allmeteredfuns)
381         _struct_pad(symbol_extra)      /* *all-metered-functions* */
382
383         _struct_pad(fulltag_misc)
384         _struct_label(total_gc_microseconds)
385         _struct_pad(symbol_extra)      /* *total-gc-microseconds* */
386
387         _struct_pad(fulltag_misc)
388         _struct_label(builtin_functions)
389         _struct_pad(symbol_extra)      /* %builtin-functions% */
390       
391         _struct_pad(fulltag_misc)
392         _struct_label(udf)
393         _struct_pad(symbol_extra)      /* %unbound-function% */
394
395         _struct_pad(fulltag_misc)
396         _struct_label(init_misc)
397         _struct_pad(symbol_extra)      /* %init-misc */
398
399         _struct_pad(fulltag_misc)
400         _struct_label(macro_code)
401         _struct_pad(symbol_extra)      /* %macro-code% */
402
403         _struct_pad(fulltag_misc)
404         _struct_label(closure_code)
405         _struct_pad(symbol_extra)      /* %closure-code% */
406
407         _struct_pad(fulltag_misc)
408         _struct_label(new_gcable_ptr)
409         _struct_pad(symbol_extra)      /* %new-gcable-ptr */
410       
411         _struct_pad(fulltag_misc)
412         _struct_label(gc_event_status_bits)
413         _struct_pad(symbol_extra)      /* *gc-event-status-bits* */
414
415         _struct_pad(fulltag_misc)
416         _struct_label(post_gc_hook)
417         _struct_pad(symbol_extra)      /* *post-gc-hook* */
418
419         _struct_pad(fulltag_misc)
420         _struct_label(handlers)
421         _struct_pad(symbol_extra)      /* %handlers% */
422
423         _struct_pad(fulltag_misc)
424         _struct_label(all_packages)
425         _struct_pad(symbol_extra)      /* %all-packages% */
426
427         _struct_pad(fulltag_misc)
428         _struct_label(keyword_package)
429         _struct_pad(symbol_extra)      /* *keyword-package* */
430
431         _struct_pad(fulltag_misc)
432         _struct_label(finalization_alist)
433         _struct_pad(symbol_extra)      /* %finalization-alist% */
434
435         _struct_pad(fulltag_misc)
436         _struct_label(foreign_thread_control)
437         _struct_pad(symbol_extra)      /* %foreign-thread-control */
438
439        _ends
440
441define(`def_header',`$1 = ($2<<num_subtag_bits)|$3')
442
443def_header(single_float_header,single_float.element_count,subtag_single_float)
444def_header(double_float_header,double_float.element_count,subtag_double_float)
445def_header(one_digit_bignum_header,1,subtag_bignum)
446def_header(two_digit_bignum_header,2,subtag_bignum)
447def_header(three_digit_bignum_header,3,subtag_bignum)
448def_header(symbol_header,symbol.element_count,subtag_symbol)
449def_header(value_cell_header,1,subtag_value_cell)
450def_header(macptr_header,macptr.element_count,subtag_macptr)
451def_header(vectorH_header,vectorH.element_count,subtag_vectorH)
452
453        include(errors.s)
454
455/* Symbol bits that we care about */
456sym_vbit_bound = (0+fixnum_shift)
457sym_vbit_bound_mask = (1<<sym_vbit_bound)
458sym_vbit_const = (1+fixnum_shift)
459sym_vbit_const_mask = (1<<sym_vbit_const)
460
461        _struct(area,0)
462         _node(pred)
463         _node(succ)
464         _node(low)
465         _node(high)
466         _node(active)
467         _node(softlimit)
468         _node(hardlimit)
469         _node(code)
470         _node(markbits)
471         _node(ndwords)
472         _node(older)
473         _node(younger)
474         _node(h)
475         _node(sofprot)
476         _node(hardprot)
477         _node(owner)
478         _node(refbits)
479         _node(nextref)
480        _ends
481
482ifdef(`WIN_32',`
483TCR_BIAS = 0xe10 + (4 * 30)     /* last 34 words of TlsSlots */
484',`
485TCR_BIAS = 0
486')
487
488ifdef(`WIN_32',`
489        _struct(tcr,TCR_BIAS)
490         _node(linear)          /* our linear (non-segment-based) address. */
491         _word(aux)             /* pointer to tcr_aux struct, see below */
492         _node(valence)         /* odd when in foreign code */
493         _word(node_regs_mask)
494         _node(save_allocbase)
495         _node(save_allocptr)
496         _node(last_allocptr)
497         _node(catch_top)       /* top catch frame */
498         _node(db_link)         /* special binding chain head */
499         _node(tlb_limit)
500         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer */
501         _node(ffi_exception)   /* mxcsr exception bits from ff-call */
502         _node(foreign_sp)      /* Saved foreign SP when in lisp code */
503         _node(interrupt_pending)
504         _node(next_method_context)
505         _node(next_tsp)
506         _node(safe_ref_address)
507         _node(save_tsp)        /* TSP when in foreign code */
508         _node(save_vsp)        /* VSP when in foreign code */
509         _node(save_ebp)        /* lisp EBP when in foreign code */
510         _node(ts_area)         /* tstack area pointer */
511         _node(vs_area)         /* vstack area pointer */
512         _node(xframe)          /* per-thread exception frame list */
513         _node(unwinding)
514         _node(flags)     
515         _node(foreign_mxcsr)
516         _word(lisp_mxcsr)
517         _word(pending_exception_context)
518         _word(unboxed0)
519         _word(unboxed1)
520         _node(save0)           /* spill area for node registers... */
521         _node(save1)           /* ...must be 16-byte aligned */
522         _node(save2)
523         _node(save3)
524        _ends
525
526        _struct(tcr_aux,0)
527         _word(bytes_allocated)
528         _word(bytes_allocated_high)
529         _node(cs_area)         /* cstack area pointer */
530         _node(cs_limit)        /* cstack overflow limit */
531         _node(log2_allocation_quantum)
532         _node(errno_loc)       /* per-thread  errno location */
533         _node(osid)            /* OS thread id */
534         _node(foreign_exception_status)
535         _node(native_thread_info)
536         _node(native_thread_id)
537         _node(reset_completion)
538         _node(activate)
539         _node(gc_context)
540         _node(termination_semaphore)
541         _node(shutdown_count)
542         _node(suspend_count)
543         _node(suspend_context)
544         _node(suspend)         /* semaphore for suspension notify */
545         _node(resume)          /* sempahore for resumption notify */
546         _word(allocated)
547         _word(pending_io_info)
548         _word(io_datum)
549         _node(next)            /* in doubly-linked list */
550         _node(prev)            /* in doubly-linked list */
551        _ends
552',`
553/*  Thread context record.  */
554
555        _struct(tcr,TCR_BIAS)
556         _node(next)            /* in doubly-linked list */
557         _node(prev)            /* in doubly-linked list */
558         _word(node_regs_mask)
559         _node(linear)          /* our linear (non-segment-based) address. */
560         _node(save0)           /* spill area for node registers (16-byte aligned ) */
561         _node(save1)
562         _node(save2)
563         _node(save3)
564         _node(save_ebp)        /* lisp EBP when in foreign code */
565         _word(lisp_mxcsr)
566         _word(foreign_mxcsr)   
567         _node(db_link)         /* special binding chain head */
568         _node(catch_top)       /* top catch frame */
569         _node(save_vsp)        /* VSP when in foreign code */
570         _node(save_tsp)        /* TSP when in foreign code */
571         _node(foreign_sp)      /* Saved foreign SP when in lisp code */
572         _node(cs_area)         /* cstack area pointer */
573         _node(vs_area)         /* vstack area pointer */
574         _node(ts_area)         /* tstack area pointer */
575         _node(cs_limit)        /* cstack overflow limit */
576         _word(bytes_allocated)
577         _word(bytes_consed_high)
578         _node(log2_allocation_quantum)
579         _node(interrupt_pending)
580         _node(xframe)          /* per-thread exception frame list */
581         _node(errno_loc)       /* per-thread  errno location */
582         _node(ffi_exception)   /* mxcsr exception bits from ff-call */
583         _node(osid)            /* OS thread id */
584         _node(valence)         /* odd when in foreign code */
585         _node(foreign_exception_status)
586         _node(native_thread_info)
587         _node(native_thread_id)
588         _node(last_allocptr)
589         _node(save_allocptr)
590         _node(save_allocbase)
591         _node(reset_completion)
592         _node(activate)
593         _node(suspend_count)
594         _node(suspend_context)
595         _node(pending_exception_context)
596         _node(suspend)         /* semaphore for suspension notify */
597         _node(resume)          /* sempahore for resumption notify */
598         _node(flags)     
599         _node(gc_context)
600         _node(termination_semaphore)
601         _node(unwinding)
602         _node(tlb_limit)
603         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer */
604         _node(shutdown_count)
605         _node(next_tsp)
606         _node(safe_ref_address)
607         _word(ldt_selector)
608         _word(scratch_mxcsr)
609         _word(unboxed0)
610         _word(unboxed1)
611         _node(next_method_context)
612         _word(save_eflags)
613         _word(allocated)
614         _word(pending_io_info)
615         _word(io_datum)
616        _ends
617')
618
619        _struct(win32_context,0)
620         _field(ContextFlags, 4)
621         _field(Dr0, 4)
622         _field(Dr1, 4)
623         _field(Dr2, 4)
624         _field(Dr3, 4)
625         _field(Dr6, 4)
626         _field(Dr7, 4)
627         _struct_label(FloatSave)
628         _field(ControlWord, 4);
629         _field(StatusWord, 4)
630         _field(TagWord, 4)
631         _field(ErrorOffset, 4)
632         _field(ErrorSelector, 4)
633         _field(DataOffset, 4)
634         _field(DataSelector, 4)
635         _field(RegisterArea, 80)
636         _field(Cr0NpxState, 4)
637       
638         _field(SegGs, 4)
639         _field(SegFs, 4)
640         _field(SegEs, 4)
641         _field(SegDs, 4)
642         _field(Edi, 4)
643         _field(Esi, 4)
644         _field(Ebx, 4)
645         _field(Edx, 4)
646         _field(Ecx, 4)
647         _field(Eax, 4)
648         _field(Ebp, 4)
649         _field(Eip, 4)
650         _field(SegCs, 4)
651         _field(EFlags, 4)
652         _field(Esp, 4)
653         _field(SegSs, 4)
654         _struct_label(ExtendedRegisters)
655         _struct_pad(24)
656         _field(MXCSR,4)
657         _struct_pad(132) /* (- 160 28) */
658         _field(Xmm0,16)
659         _field(Xmm1,16)
660         _field(Xmm2,16)
661         _field(Xmm3,16)
662         _field(Xmm4,16)
663         _field(Xmm5,16)
664         _field(Xmm6,16)
665         _field(Xmm7,16)
666         _struct_pad(224)
667         _ends
668       
669target_most_positive_fixnum = 536870911
670target_most_negative_fixnum = -536870912
671call_arguments_limit = 0x10000
672
673lisp_globals_limit = (0x13000+(LOWMEM_BIAS))
674       
675INTERRUPT_LEVEL_BINDING_INDEX = fixnumone
676
677
678ifdef(`DARWIN',`
679c_stack_16_byte_aligned = 1
680',`
681c_stack_16_byte_aligned = 0
682')               
Note: See TracBrowser for help on using the repository browser.