source: branches/x8664-call/ccl/lisp-kernel/x86-constants64.s @ 6384

Last change on this file since 6384 was 6384, checked in by gb, 15 years ago

Reassign registers: %rcx = %imm2, %r10 = %temp2.
This basically means that we get an additional immediate register.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.6 KB
Line 
1/*   Copyright (C) 2005 Clozure Associates  */
2/*   This file is part of OpenMCL.    */
3
4/*   OpenMCL is licensed under the terms of the Lisp Lesser GNU Public  */
5/*   License , known as the LLGPL and distributed with OpenMCL as the  */
6/*   file "LICENSE".  The LLGPL consists of a preamble and the LGPL,  */
7/*   which is distributed with OpenMCL as the file "LGPL".  Where these  */
8/*   conflict, the preamble takes precedence.    */
9 
10/*   OpenMCL is referenced in the preamble as the "LIBRARY."  */
11 
12/*   The LLGPL is also available online at  */
13/*   http://opensource.franz.com/preamble.html  */
14
15
16/* Register usage.  This is certainly a little short of  */
17/* immediate registers; we can maybe use the low bits  */
18/* of mmx or xmm registers to hold immediate values and  */
19/* do some unboxed arithmetic.   */
20
21
22
23/* Redefining these standard register names - with the same _l, _w, _b suffixes  */
24/*  used in lispy symbolic names - allows us to play Stupid M4 Tricks in macros  */
25                       
26define([rax_l],[eax])
27define([rax_w],[ax])
28define([rax_b],[al])
29define([rbx_l],[ebx])
30define([rbx_w],[bx])
31define([rbx_b],[bl])
32define([rcx_l],[ecx])
33define([rcx_w],[cx])
34define([rdx_l],[edx])
35define([rdx_w],[dx])                                   
36define([rdx_b],[dl])                                                   
37define([rsi_l],[esi])
38define([rsi_w],[si])                           
39define([rsi_b],[sil])
40define([rdi_l],[edo])
41define([rdi_w],[di])                           
42define([rdi_b],[dil])
43define([r8_l],[r8d])
44define([r8_w],[r8w])                                   
45define([r8_b],[r8b])                                                   
46define([r9_l],[r9d])
47define([r9_w],[r9w])                                   
48define([r9_b],[r9b])                                                   
49define([r10_l],[r10d])
50define([r10_w],[r10w])                                 
51define([r10_b],[r10b])                                                 
52define([r10_l],[r11d])
53define([r11_w],[r11w])                                 
54define([r11_b],[r11b])                                                 
55define([r12_l],[r12d])
56define([r12_w],[r12w])                                 
57define([r12_b],[r12b])                                                 
58define([r13_l],[r13d])
59define([r13_w],[r13w])                                 
60define([r13_b],[r13b])                                                 
61define([r14_l],[r14d])
62define([r14_w],[r14w])                                 
63define([r14_b],[r14b])                                                 
64define([r15_l],[r15d])
65define([r15_w],[r15w])                                 
66define([r15_b],[r15b])                                                 
67
68define([imm0],[rax]) 
69        define([imm0_l],[eax])
70        define([imm0_w],[ax])
71        define([imm0_b],[al])
72        define([Rimm0],[0])
73       
74define([temp0],[rbx])
75        define([temp0_l],[ebx])
76        define([temp0_w],[bx])
77        define([temp0_b],[bl])
78        define([Rtemp0],[3])
79
80define([imm2],[rcx])
81        define([imm2_l],[ecx])
82        define([imm2_w],[cx])
83        define([imm2_b],[cl])
84        define([Rimm2],[1])
85       
86define([imm1],[rdx])
87        define([imm1_l],[edx])
88        define([imm1_w],[dx])
89        define([imm1_b],[dl])
90        define([Rimm1],[2])
91       
92define([arg_z],[rsi])
93        define([arg_z_l],[esi])
94        define([arg_z_w],[si])
95        define([arg_z_b],[sil])
96        define([Rarg_z],[6])
97
98define([arg_y],[rdi])
99        define([arg_y_l],[edi])
100        define([arg_y_w],[di])
101        define([arg_y_b],[dil])
102        define([Rarg_y],[7])
103
104define([arg_x],[r8])
105        define([arg_x_l],[r8d])
106        define([arg_x_w],[r8w])
107        define([arg_x_b],[r8b])
108        define([Rarg_x],[8])
109
110define([temp1],[r9])
111        define([temp1_l],[r9d])
112        define([temp1_w],[r9w])
113        define([temp1_b],[r9b])
114        define([Rtemp1],[9])
115
116define([temp2],[r10])
117        define([temp2_l],[r10d])
118        define([temp2_w],[r10w])
119        define([temp2_x_b],[r10b])
120        define([Rtemp2],[10])
121       
122define([save3],[r11])           
123        define([save3_l],[r11d])
124        define([save3_w],[r11w])
125        define([save3_b],[r11b])
126        define([Rsave3],[11])
127       
128define([save2],[r12])
129        define([save2_l],[r12d])
130        define([save2_w],[r12w])
131        define([save2_b],[r12b])
132        define([Rsave2],[12])
133       
134define([fn],[r13])              /* some addressing restrictions   */
135        define([fn_l],[r13d])
136        define([fn_w],[r13w])
137        define([fn_b],[r13b])
138        define([Rfn],[13])
139       
140define([save1],[r14])
141        define([save1_l],[r14d])
142        define([save1_w],[r14w])
143        define([save1_b],[r14b])
144        define([Rsave1],[14])
145               
146define([save0],[r15])
147        define([save0_l],[r15d])
148        define([save0_w],[r15w])
149        define([save0_b],[r15b])
150        define([Rsave0],[15])   
151
152/* The TCR can be accessed relative to %gs   */
153define([rcontext],[gs])
154define([fname],[temp0])
155define([next_method_context],[temp0])
156define([nargs_b],[imm2_b])     
157define([nargs],[imm2_w])
158define([nargs_q],[imm2])
159define([nargs_l],[imm2_l])
160define([ra0],[temp2])       
161                                               
162define([xfn],[temp1])   
163
164
165define([allocptr],[temp0])             
166define([stack_temp],[mm7])
167
168               
169define([fp0],[xmm0])           
170define([fp1],[xmm1])           
171define([fp2],[xmm2])           
172define([fp3],[xmm3])           
173define([fp4],[xmm4])           
174define([fp5],[xmm5])           
175define([fp6],[xmm6])           
176define([fp7],[xmm7])           
177define([fp8],[xmm8])           
178define([fp9],[xmm9])           
179define([fp10],[xmm10])         
180define([fp11],[xmm11])         
181define([fp12],[xmm12])         
182define([fp13],[xmm13])         
183define([fp14],[xmm14])         
184define([fp15],[xmm15])         
185define([fpzero],[fp15])
186       
187       
188nbits_in_word = 64
189nbits_in_byte = 8
190ntagbits = 4
191nlisptagbits = 3
192nfixnumtagbits = 3
193nlowtagbits = 2       
194num_subtag_bits = 8
195subtag_shift = num_subtag_bits 
196fixnumshift = 3
197fixnum_shift = 3
198fulltagmask = 15
199tagmask = 7
200fixnummask = 7
201ncharcodebits = 8
202charcode_shift = 8
203word_shift = 3
204node_size = 8
205dnode_size = 16
206dnode_align_bits = 4
207dnode_shift = dnode_align_bits       
208bitmap_shift = 6
209       
210fixnumone = (1<<fixnumshift)
211fixnum_one = fixnumone
212fixnum1 = fixnumone
213
214nargregs = 3
215nsaveregs = 4   
216               
217
218tag_fixnum = 0
219tag_imm_0 = 1           /* subtag_single_float ONLY   */
220tag_imm_1 = 2           /* subtag_character, internal markers   */
221tag_list = 3            /* fulltag_cons or NIL   */
222tag_tra = 4             /* tagged return_address   */
223tag_misc = 5            /* random uvector   */
224tag_symbol = 6          /* non-null symbol   */
225tag_function = 7        /* function entry point   */
226
227tag_single_float = tag_imm_0
228               
229fulltag_even_fixnum = 0
230fulltag_imm_0 = 1               /* subtag_single_float (ONLY)   */
231fulltag_imm_1 = 2               /* subtag_character (mostly)   */
232fulltag_cons = 3
233fulltag_tra_0 = 4               /* tagged return address   */
234fulltag_nodeheader_0 = 5
235fulltag_nodeheader_1 = 6
236fulltag_immheader_0 = 7
237fulltag_odd_fixnum = 8
238fulltag_immheader_1 = 9
239fulltag_immheader_2 = 10
240fulltag_nil = 11
241fulltag_tra_1 = 12
242fulltag_misc = 13
243fulltag_symbol = 14
244fulltag_function = 15
245
246define([define_subtag],[
247subtag_$1 = ($2 | ($3 << ntagbits))
248])
249       
250
251define_subtag(arrayH,fulltag_nodeheader_0,10)
252define_subtag(vectorH,fulltag_nodeheader_1,10)
253define_subtag(simple_vector,fulltag_nodeheader_1,11)
254min_vector_subtag = subtag_vectorH
255min_array_subtag = subtag_arrayH
256       
257       
258ivector_class_64_bit = fulltag_immheader_2
259ivector_class_32_bit = fulltag_immheader_1
260ivector_class_other_bit = fulltag_immheader_0
261
262define_subtag(fixnum_vector,ivector_class_64_bit,12)
263define_subtag(s64_vector,ivector_class_64_bit,13)
264define_subtag(u64_vector,ivector_class_64_bit,14)
265define_subtag(double_float_vector,ivector_class_64_bit,15)
266
267define_subtag(simple_base_string,ivector_class_32_bit,12)
268define_subtag(s32_vector,ivector_class_32_bit,13)
269define_subtag(u32_vector,ivector_class_32_bit,14)
270define_subtag(single_float_vector,ivector_class_32_bit,15)
271       
272define_subtag(s16_vector,ivector_class_other_bit,10)
273define_subtag(u16_vector,ivector_class_other_bit,11)
274define_subtag(s8_vector,ivector_class_other_bit,13)
275define_subtag(u8_vector,ivector_class_other_bit,14)
276define_subtag(bit_vector,ivector_class_other_bit,15)
277
278
279/* There's some room for expansion in non-array ivector space.   */
280define_subtag(macptr,ivector_class_64_bit,1)
281define_subtag(dead_macptr,ivector_class_64_bit,2)
282define_subtag(bignum,ivector_class_32_bit,1)
283define_subtag(double_float,ivector_class_32_bit,2)
284define_subtag(xcode_vector,ivector_class_32_bit,3)
285
286       
287/* Note the difference between (e.g) fulltag_function - which  */
288/* defines what the low 4 bytes of a function pointer look like -  */
289/* and subtag_function - which describes what the subtag byte  */
290/* in a function header looks like.  (Likewise for fulltag_symbol  */
291/* and subtag_symbol)  */
292               
293
294define_subtag(symbol,fulltag_nodeheader_0,1)
295define_subtag(catch_frame,fulltag_nodeheader_0,2)
296define_subtag(hash_vector,fulltag_nodeheader_0,3)
297define_subtag(pool,fulltag_nodeheader_0,4)
298define_subtag(weak,fulltag_nodeheader_0,5)
299define_subtag(package,fulltag_nodeheader_0,6)
300define_subtag(slot_vector,fulltag_nodeheader_0,7)
301define_subtag(basic_stream,fulltag_nodeheader_0,8)
302define_subtag(function,fulltag_nodeheader_0,9)
303       
304define_subtag(ratio,fulltag_nodeheader_1,1)
305define_subtag(complex,fulltag_nodeheader_1,2)
306define_subtag(struct,fulltag_nodeheader_1,3)
307define_subtag(istruct,fulltag_nodeheader_1,4)
308define_subtag(value_cell,fulltag_nodeheader_1,5)
309define_subtag(xfunction,fulltag_nodeheader_1,6)
310define_subtag(lock,fulltag_nodeheader_1,7)
311define_subtag(instance,fulltag_nodeheader_1,8)
312       
313                       
314nil_value = (0x3000+fulltag_nil)
315t_value = (0x3020+fulltag_symbol)
316misc_bias = fulltag_misc
317cons_bias = fulltag_cons
318define([t_offset],(t_value-nil_value))
319       
320misc_header_offset = -fulltag_misc
321misc_data_offset = misc_header_offset+node_size /* first word of data    */
322misc_subtag_offset = misc_header_offset       /* low byte of header   */
323misc_dfloat_offset = misc_data_offset           /* double-floats are doubleword-aligned   */
324function_header_offset = -fulltag_function
325function_data_offset = function_header_offset+node_size
326
327define_subtag(single_float,fulltag_imm_0,0)
328
329
330define_subtag(character,fulltag_imm_1,0)
331                       
332define_subtag(unbound,fulltag_imm_1,1)
333unbound_marker = subtag_unbound
334undefined = unbound_marker
335define_subtag(slot_unbound,fulltag_imm_1,2)
336slot_unbound_marker = subtag_slot_unbound
337define_subtag(illegal,fulltag_imm_1,3)
338illegal_marker = subtag_illegal
339define_subtag(no_thread_local_binding,fulltag_imm_1,4)
340no_thread_local_binding_marker = subtag_no_thread_local_binding
341define_subtag(reserved_frame,fulltag_imm_1,5)
342reserved_frame_marker = subtag_reserved_frame
343define_subtag(function_boundary_marker,fulltag_imm_1,15)                       
344
345       
346
347
348       
349/* The objects themselves look something like this:   */
350       
351/* Order of CAR and CDR doesn]t seem to matter much - there aren't   */
352/* too many tricks to be played with predecrement/preincrement addressing.   */
353/* Keep them in the confusing MCL 3.0 order, to avoid confusion.   */
354        _struct(cons,-cons_bias)
355         _node(cdr)
356         _node(car)
357        _ends
358       
359        _structf(ratio)
360         _node(numer)
361         _node(denom)
362        _endstructf
363       
364        _structf(double_float)
365         _word(value)
366         _word(val_low)
367        _endstructf
368       
369        _structf(macptr)
370         _node(address)
371         _node(domain)
372         _node(type)
373        _endstructf
374       
375/* Functions are of (conceptually) unlimited size.  */
376       
377        _struct(_function,-misc_bias)
378         _node(header)
379         _node(codevector)
380        _ends
381
382        _struct(tsp_frame,0)
383         _node(backlink)
384         _node(type)
385         _struct_label(fixed_overhead)
386         _struct_label(data_offset)
387        _ends
388
389
390
391        _structf(symbol,-fulltag_symbol)
392         _node(pname)
393         _node(vcell)
394         _node(fcell)
395         _node(package_predicate)
396         _node(flags)
397         _node(plist)
398         _node(binding_index)
399        _endstructf
400
401        _structf(catch_frame)
402         _node(catch_tag)       /* #<unbound> -> unwind-protect, else catch   */
403         _node(link)            /* backpointer to previous catch frame   */
404         _node(mvflag)          /* 0 if single-valued catch, fixnum 1 otherwise   */
405         _node(rsp)             /* saved lisp sp   */
406         _node(rbp)             /* saved lisp rbp   */
407         _node(foreign_sp)      /* necessary ?    */
408         _node(db_link)         /* head of special-binding chain   */
409         _node(_save3)
410         _node(_save2)
411         _node(_save1)
412         _node(_save0)
413         _node(xframe)          /* exception frame chain   */
414         _node(pc)              /* TRA of catch exit or cleanup form   */
415        _endstructf
416
417
418        _structf(vectorH)
419         _node(logsize)
420         _node(physsize)
421         _node(data_vector)
422         _node(displacement)
423         _node(flags)
424        _endstructf     
425
426        _structf(arrayH)
427         _node(rank)
428         _node(physsize)
429         _node(data_vector)
430         _node(displacement)
431         _node(flags)
432         _struct_label(dim0)       
433        _endstructf     
434               
435       
436        _struct(c_frame,0)      /* PowerOpen ABI C stack frame   */
437         _node(backlink)
438         _node(crsave)
439         _node(savelr)
440         _field(unused, 16)
441         _node(savetoc)
442         _struct_label(params)
443         _node(param0)
444         _node(param1)
445         _node(param2)
446         _node(param3)
447         _node(param4)
448         _node(param5)
449         _node(param6)
450         _node(param7)
451         _struct_label(minsiz)
452        _ends
453
454
455        _struct(eabi_c_frame,0)
456         _word(backlink)
457         _word(savelr)
458         _word(param0)
459         _word(param1)
460         _word(param2)
461         _word(param3)
462         _word(param4)
463         _word(param5)
464         _word(param6)
465         _word(param7)
466         _struct_label(minsiz)
467        _ends
468
469        /* For entry to variable-argument-list functions   */
470        /* (e.g., via callback)   */
471        _struct(varargs_eabi_c_frame,0)
472         _word(backlink)
473         _word(savelr)
474         _struct_label(va_list)
475         _word(flags)           /* gpr count byte, fpr count byte, padding   */
476         _word(overflow_arg_area)
477         _word(reg_save_area)
478         _field(padding,4)
479         _struct_label(regsave)
480         _field(gp_save,8*4)
481         _field(fp_save,8*8)
482         _word(old_backlink)
483         _word(old_savelr)
484         _struct_label(incoming_stack_args)
485        _ends
486               
487        _struct(lisp_frame,0)
488         _node(backlink)
489         _node(savera0)
490        _ends
491
492        _struct(vector,-fulltag_misc)
493         _node(header)
494         _struct_label(data)
495        _ends
496
497        _struct(binding,0)
498         _node(link)
499         _node(sym)
500         _node(val)
501        _ends
502
503
504/* Nilreg-relative globals.  Talking the assembler into doing  */
505/* something reasonable here  */
506/* is surprisingly hard.   */
507
508symbol_extra = symbol.size-fulltag_symbol
509
510       
511        _struct(nrs,0x3020)
512         _struct_pad(fulltag_symbol)
513         _struct_label(tsym)
514         _struct_pad(symbol_extra)      /* t    */
515
516         _struct_pad(fulltag_symbol)
517         _struct_label(nil)
518         _struct_pad(symbol_extra)      /* nil    */
519
520         _struct_pad(fulltag_symbol)
521         _struct_label(errdisp)
522         _struct_pad(symbol_extra)      /* %err-disp    */
523
524         _struct_pad(fulltag_symbol)
525         _struct_label(cmain)
526         _struct_pad(symbol_extra)      /* cmain    */
527
528         _struct_pad(fulltag_symbol)
529         _struct_label(eval)
530         _struct_pad(symbol_extra)      /* eval    */
531 
532         _struct_pad(fulltag_symbol)
533         _struct_label(appevalfn)
534         _struct_pad(symbol_extra)      /* apply-evaluated-function    */
535
536         _struct_pad(fulltag_symbol)
537         _struct_label(error)
538         _struct_pad(symbol_extra)      /* error    */
539
540         _struct_pad(fulltag_symbol)
541         _struct_label(defun)
542         _struct_pad(symbol_extra)      /* %defun    */
543
544         _struct_pad(fulltag_symbol)
545         _struct_label(defvar)
546         _struct_pad(symbol_extra)      /* %defvar    */
547
548         _struct_pad(fulltag_symbol)
549         _struct_label(defconstant)
550         _struct_pad(symbol_extra)      /* %defconstant    */
551
552         _struct_pad(fulltag_symbol)
553         _struct_label(macrosym)
554         _struct_pad(symbol_extra)      /* %macro    */
555
556         _struct_pad(fulltag_symbol)
557         _struct_label(kernelrestart)
558         _struct_pad(symbol_extra)      /* %kernel-restart    */
559
560         _struct_pad(fulltag_symbol)
561         _struct_label(package)
562         _struct_pad(symbol_extra)      /* *package*    */
563
564         _struct_pad(fulltag_symbol)
565         _struct_label(total_bytes_freed)               /* *total-bytes-freed*   */
566         _struct_pad(symbol_extra)
567
568         _struct_pad(fulltag_symbol)
569         _struct_label(kallowotherkeys)
570         _struct_pad(symbol_extra)      /* allow-other-keys    */
571
572         _struct_pad(fulltag_symbol)
573         _struct_label(toplcatch)
574         _struct_pad(symbol_extra)      /* %toplevel-catch%    */
575
576         _struct_pad(fulltag_symbol)
577         _struct_label(toplfunc)
578         _struct_pad(symbol_extra)      /* %toplevel-function%    */
579
580         _struct_pad(fulltag_symbol)
581         _struct_label(callbacks)
582         _struct_pad(symbol_extra)      /* %pascal-functions%    */
583
584         _struct_pad(fulltag_symbol)
585         _struct_label(allmeteredfuns)
586         _struct_pad(symbol_extra)      /* *all-metered-functions*    */
587
588         _struct_pad(fulltag_symbol)
589         _struct_label(total_gc_microseconds)           /* *total-gc-microseconds*   */
590         _struct_pad(symbol_extra)
591
592         _struct_pad(fulltag_symbol)
593         _struct_label(builtin_functions)               /* %builtin-functions%   */
594         _struct_pad(symbol_extra)               
595
596         _struct_pad(fulltag_symbol)
597         _struct_label(udf)
598         _struct_pad(symbol_extra)      /* %unbound-function%    */
599
600         _struct_pad(fulltag_symbol)
601         _struct_label(init_misc)
602         _struct_pad(symbol_extra)      /* %init-misc   */
603
604         _struct_pad(fulltag_symbol)
605         _struct_label(macro_code)
606         _struct_pad(symbol_extra)      /* %macro-code%   */
607
608         _struct_pad(fulltag_symbol)
609         _struct_label(closure_code)
610         _struct_pad(symbol_extra)      /* %closure-code%   */
611
612         _struct_pad(fulltag_symbol)
613         _struct_label(new_gcable_ptr) /* %new-gcable-ptr   */
614         _struct_pad(symbol_extra)
615       
616         _struct_pad(fulltag_symbol)
617         _struct_label(gc_event_status_bits)
618         _struct_pad(symbol_extra)      /* *gc-event-status-bits*    */
619
620         _struct_pad(fulltag_symbol)
621         _struct_label(post_gc_hook)
622         _struct_pad(symbol_extra)      /* *post-gc-hook*    */
623
624         _struct_pad(fulltag_symbol)
625         _struct_label(handlers)
626         _struct_pad(symbol_extra)      /* %handlers%    */
627
628
629         _struct_pad(fulltag_symbol)
630         _struct_label(all_packages)
631         _struct_pad(symbol_extra)      /* %all-packages%    */
632
633         _struct_pad(fulltag_symbol)
634         _struct_label(keyword_package)
635         _struct_pad(symbol_extra)      /* *keyword-package*    */
636
637         _struct_pad(fulltag_symbol)
638         _struct_label(finalization_alist)
639         _struct_pad(symbol_extra)      /* %finalization-alist%    */
640
641         _struct_pad(fulltag_symbol)
642         _struct_label(foreign_thread_control)
643         _struct_pad(symbol_extra)      /* %foreign-thread-control    */
644
645        _ends
646
647define([def_header],[
648$1 = ($2<<num_subtag_bits)|$3])
649
650        def_header(double_float_header,2,subtag_double_float)
651        def_header(two_digit_bignum_header,2,subtag_bignum)
652        def_header(three_digit_bignum_header,3,subtag_bignum)
653        def_header(four_digit_bignum_header,4,subtag_bignum)
654        def_header(five_digit_bignum_header,5,subtag_bignum)       
655        def_header(symbol_header,symbol.element_count,subtag_symbol)
656        def_header(value_cell_header,1,subtag_value_cell        )
657        def_header(macptr_header,macptr.element_count,subtag_macptr)
658        def_header(vectorH_header,vectorH.element_count,subtag_vectorH)
659
660        include(errors.s)
661
662/* Symbol bits that we care about  */
663       
664sym_vbit_bound = (0+fixnum_shift)
665sym_vbit_bound_mask = (1<<sym_vbit_bound)
666sym_vbit_const = (1+fixnum_shift)
667sym_vbit_const_mask = (1<<sym_vbit_const)
668
669        _struct(area,0)
670         _node(pred) 
671         _node(succ) 
672         _node(low) 
673         _node(high) 
674         _node(active) 
675         _node(softlimit) 
676         _node(hardlimit) 
677         _node(code) 
678         _node(markbits) 
679         _node(ndwords) 
680         _node(older) 
681         _node(younger) 
682         _node(h) 
683         _node(sofprot) 
684         _node(hardprot) 
685         _node(owner) 
686         _node(refbits) 
687         _node(nextref) 
688        _ends
689
690
691
692TCR_BIAS = 0
693               
694/*  Thread context record.  */
695
696        _struct(tcr,TCR_BIAS)
697         _node(prev)            /* in doubly-linked list   */
698         _node(next)            /* in doubly-linked list   */
699         _node(single_float_convert)
700         _node(linear)          /* our linear (non-segment-based) address.   */
701         _node(save_rbp)        /* lisp RBP when in foreign code    */
702         _word(lisp_mxcsr)
703         _word(foreign_mxcsr)   
704         _node(db_link)         /* special binding chain head   */
705         _node(catch_top)       /* top catch frame   */
706         _node(save_vsp)        /* VSP when in foreign code   */
707         _node(save_tsp)        /* TSP when in foreign code   */
708         _node(foreign_sp)      /* Saved foreign SP when in lisp code   */
709         _node(cs_area)         /* cstack area pointer   */
710         _node(vs_area)         /* vstack area pointer   */
711         _node(ts_area)         /* tstack area pointer   */
712         _node(cs_limit)        /* cstack overflow limit   */
713         _word(bytes_consed_low)
714         _word(bytes_consed_high)
715         _node(log2_allocation_quantum)
716         _node(interrupt_pending)
717         _node(xframe)          /* per-thread exception frame list   */
718         _node(errno_loc)       /* per-thread  errno location   */
719         _node(ffi_exception)   /* mxcsr exception bits from ff-call   */
720         _node(osid)            /* OS thread id   */
721         _node(valence)         /* odd when in foreign code       */
722         _node(foreign_exception_status)
723         _node(native_thread_info)
724         _node(native_thread_id)
725         _node(last_allocptr)
726         _node(save_allocptr)
727         _node(save_allocbase)
728         _node(reset_completion)
729         _node(activate)
730         _node(suspend_count)
731         _node(suspend_context)
732         _node(pending_exception_context)
733         _node(suspend)         /* semaphore for suspension notify   */
734         _node(resume)          /* sempahore for resumption notify   */
735         _word(flags_pad)
736         _word(flags)     
737         _node(gc_context)
738         _node(termination_semaphore)
739         _node(unwinding)
740         _node(tlb_limit)
741         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer   */
742         _node(shutdown_count)
743         _node(next_tsp)
744         _node(safe_ref_address)
745        _ends
746
747
748       
749TCR_FLAG_BIT_FOREIGN = fixnum_shift
750TCR_FLAG_BIT_AWAITING_PRESET = (fixnum_shift+1) 
751
752target_most_positive_fixnum = 1152921504606846975
753target_most_negative_fixnum = -1152921504606846976
754
755
756lisp_globals_limit = 0x3000
757       
758INTERRUPT_LEVEL_BINDING_INDEX = fixnumone
759
760       
761                       
762               
Note: See TracBrowser for help on using the repository browser.