source: trunk/ccl/lisp-kernel/x86-constants64.s @ 5652

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

Move NIL up a page on x86-64 as well.

  • 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([temp2],[rcx])
81        define([temp2_l],[ecx])
82        define([temp2_w],[cx])
83        define([temp2_b],[cl])
84        define([Rtemp2],[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([ra0],[r10])
117        define([ra0_l],[r10d])
118        define([ra0_w],[r10w])
119        define([ra0_x_b],[r10b])
120        define([Rra0],[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],[temp2_b])     
157define([nargs],[temp2_w])
158define([nargs_q],[temp2])
159define([nargs_l],[temp2_l])     
160                                               
161define([xfn],[temp1])   
162
163
164define([allocptr],[temp0])             
165define([stack_temp],[mm7])
166
167               
168define([fp0],[xmm0])           
169define([fp1],[xmm1])           
170define([fp2],[xmm2])           
171define([fp3],[xmm3])           
172define([fp4],[xmm4])           
173define([fp5],[xmm5])           
174define([fp6],[xmm6])           
175define([fp7],[xmm7])           
176define([fp8],[xmm8])           
177define([fp9],[xmm9])           
178define([fp10],[xmm10])         
179define([fp11],[xmm11])         
180define([fp12],[xmm12])         
181define([fp13],[xmm13])         
182define([fp14],[xmm14])         
183define([fp15],[xmm15])         
184define([fpzero],[fp15])
185       
186       
187nbits_in_word = 64
188nbits_in_byte = 8
189ntagbits = 4
190nlisptagbits = 3
191nfixnumtagbits = 3
192nlowtagbits = 2       
193num_subtag_bits = 8
194subtag_shift = num_subtag_bits 
195fixnumshift = 3
196fixnum_shift = 3
197fulltagmask = 15
198tagmask = 7
199fixnummask = 7
200ncharcodebits = 8
201charcode_shift = 8
202word_shift = 3
203node_size = 8
204dnode_size = 16
205dnode_align_bits = 4
206dnode_shift = dnode_align_bits       
207bitmap_shift = 6
208       
209fixnumone = (1<<fixnumshift)
210fixnum_one = fixnumone
211fixnum1 = fixnumone
212
213nargregs = 3
214nsaveregs = 4   
215               
216
217tag_fixnum = 0
218tag_imm_0 = 1           /* subtag_single_float ONLY   */
219tag_imm_1 = 2           /* subtag_character, internal markers   */
220tag_list = 3            /* fulltag_cons or NIL   */
221tag_tra = 4             /* tagged return_address   */
222tag_misc = 5            /* random uvector   */
223tag_symbol = 6          /* non-null symbol   */
224tag_function = 7        /* function entry point   */
225
226tag_single_float = tag_imm_0
227               
228fulltag_even_fixnum = 0
229fulltag_imm_0 = 1               /* subtag_single_float (ONLY)   */
230fulltag_imm_1 = 2               /* subtag_character (mostly)   */
231fulltag_cons = 3
232fulltag_tra_0 = 4               /* tagged return address   */
233fulltag_nodeheader_0 = 5
234fulltag_nodeheader_1 = 6
235fulltag_immheader_0 = 7
236fulltag_odd_fixnum = 8
237fulltag_immheader_1 = 9
238fulltag_immheader_2 = 10
239fulltag_nil = 11
240fulltag_tra_1 = 12
241fulltag_misc = 13
242fulltag_symbol = 14
243fulltag_function = 15
244
245define([define_subtag],[
246subtag_$1 = ($2 | ($3 << ntagbits))
247])
248       
249
250define_subtag(arrayH,fulltag_nodeheader_0,10)
251define_subtag(vectorH,fulltag_nodeheader_1,10)
252define_subtag(simple_vector,fulltag_nodeheader_1,11)
253min_vector_subtag = subtag_vectorH
254min_array_subtag = subtag_arrayH
255       
256       
257ivector_class_64_bit = fulltag_immheader_2
258ivector_class_32_bit = fulltag_immheader_1
259ivector_class_other_bit = fulltag_immheader_0
260
261define_subtag(fixnum_vector,ivector_class_64_bit,12)
262define_subtag(s64_vector,ivector_class_64_bit,13)
263define_subtag(u64_vector,ivector_class_64_bit,14)
264define_subtag(double_float_vector,ivector_class_64_bit,15)
265
266define_subtag(simple_base_string,ivector_class_32_bit,12)
267define_subtag(s32_vector,ivector_class_32_bit,13)
268define_subtag(u32_vector,ivector_class_32_bit,14)
269define_subtag(single_float_vector,ivector_class_32_bit,15)
270       
271define_subtag(s16_vector,ivector_class_other_bit,10)
272define_subtag(u16_vector,ivector_class_other_bit,11)
273define_subtag(s8_vector,ivector_class_other_bit,13)
274define_subtag(u8_vector,ivector_class_other_bit,14)
275define_subtag(bit_vector,ivector_class_other_bit,15)
276
277
278/* There's some room for expansion in non-array ivector space.   */
279define_subtag(macptr,ivector_class_64_bit,1)
280define_subtag(dead_macptr,ivector_class_64_bit,2)
281define_subtag(bignum,ivector_class_32_bit,1)
282define_subtag(double_float,ivector_class_32_bit,2)
283define_subtag(xcode_vector,ivector_class_32_bit,3)
284
285       
286/* Note the difference between (e.g) fulltag_function - which  */
287/* defines what the low 4 bytes of a function pointer look like -  */
288/* and subtag_function - which describes what the subtag byte  */
289/* in a function header looks like.  (Likewise for fulltag_symbol  */
290/* and subtag_symbol)  */
291               
292
293define_subtag(symbol,fulltag_nodeheader_0,1)
294define_subtag(catch_frame,fulltag_nodeheader_0,2)
295define_subtag(hash_vector,fulltag_nodeheader_0,3)
296define_subtag(pool,fulltag_nodeheader_0,4)
297define_subtag(weak,fulltag_nodeheader_0,5)
298define_subtag(package,fulltag_nodeheader_0,6)
299define_subtag(slot_vector,fulltag_nodeheader_0,7)
300define_subtag(basic_stream,fulltag_nodeheader_0,8)
301define_subtag(function,fulltag_nodeheader_0,9)
302       
303define_subtag(ratio,fulltag_nodeheader_1,1)
304define_subtag(complex,fulltag_nodeheader_1,2)
305define_subtag(struct,fulltag_nodeheader_1,3)
306define_subtag(istruct,fulltag_nodeheader_1,4)
307define_subtag(value_cell,fulltag_nodeheader_1,5)
308define_subtag(xfunction,fulltag_nodeheader_1,6)
309define_subtag(lock,fulltag_nodeheader_1,7)
310define_subtag(instance,fulltag_nodeheader_1,8)
311       
312                       
313nil_value = (0x3000+fulltag_nil)
314t_value = (0x3020+fulltag_symbol)
315misc_bias = fulltag_misc
316cons_bias = fulltag_cons
317define([t_offset],(t_value-nil_value))
318       
319misc_header_offset = -fulltag_misc
320misc_data_offset = misc_header_offset+node_size /* first word of data    */
321misc_subtag_offset = misc_header_offset       /* low byte of header   */
322misc_dfloat_offset = misc_data_offset           /* double-floats are doubleword-aligned   */
323function_header_offset = -fulltag_function
324function_data_offset = function_header_offset+node_size
325
326define_subtag(single_float,fulltag_imm_0,0)
327
328
329define_subtag(character,fulltag_imm_1,0)
330                       
331define_subtag(unbound,fulltag_imm_1,1)
332unbound_marker = subtag_unbound
333undefined = unbound_marker
334define_subtag(slot_unbound,fulltag_imm_1,2)
335slot_unbound_marker = subtag_slot_unbound
336define_subtag(illegal,fulltag_imm_1,3)
337illegal_marker = subtag_illegal
338define_subtag(no_thread_local_binding,fulltag_imm_1,4)
339no_thread_local_binding_marker = subtag_no_thread_local_binding
340define_subtag(reserved_frame,fulltag_imm_1,5)
341reserved_frame_marker = subtag_reserved_frame
342define_subtag(function_boundary_marker,fulltag_imm_1,15)                       
343
344       
345
346
347       
348/* The objects themselves look something like this:   */
349       
350/* Order of CAR and CDR doesn]t seem to matter much - there aren't   */
351/* too many tricks to be played with predecrement/preincrement addressing.   */
352/* Keep them in the confusing MCL 3.0 order, to avoid confusion.   */
353        _struct(cons,-cons_bias)
354         _node(cdr)
355         _node(car)
356        _ends
357       
358        _structf(ratio)
359         _node(numer)
360         _node(denom)
361        _endstructf
362       
363        _structf(double_float)
364         _word(value)
365         _word(val_low)
366        _endstructf
367       
368        _structf(macptr)
369         _node(address)
370         _node(domain)
371         _node(type)
372        _endstructf
373       
374/* Functions are of (conceptually) unlimited size.  */
375       
376        _struct(_function,-misc_bias)
377         _node(header)
378         _node(codevector)
379        _ends
380
381        _struct(tsp_frame,0)
382         _node(backlink)
383         _node(type)
384         _struct_label(fixed_overhead)
385         _struct_label(data_offset)
386        _ends
387
388
389
390        _structf(symbol,-fulltag_symbol)
391         _node(pname)
392         _node(vcell)
393         _node(fcell)
394         _node(package_predicate)
395         _node(flags)
396         _node(plist)
397         _node(binding_index)
398        _endstructf
399
400        _structf(catch_frame)
401         _node(catch_tag)       /* #<unbound> -> unwind-protect, else catch   */
402         _node(link)            /* backpointer to previous catch frame   */
403         _node(mvflag)          /* 0 if single-valued catch, fixnum 1 otherwise   */
404         _node(rsp)             /* saved lisp sp   */
405         _node(rbp)             /* saved lisp rbp   */
406         _node(foreign_sp)      /* necessary ?    */
407         _node(db_link)         /* head of special-binding chain   */
408         _node(_save3)
409         _node(_save2)
410         _node(_save1)
411         _node(_save0)
412         _node(xframe)          /* exception frame chain   */
413         _node(pc)              /* TRA of catch exit or cleanup form   */
414        _endstructf
415
416
417        _structf(vectorH)
418         _node(logsize)
419         _node(physsize)
420         _node(data_vector)
421         _node(displacement)
422         _node(flags)
423        _endstructf     
424
425        _structf(arrayH)
426         _node(rank)
427         _node(physsize)
428         _node(data_vector)
429         _node(displacement)
430         _node(flags)
431         _struct_label(dim0)       
432        _endstructf     
433               
434       
435        _struct(c_frame,0)      /* PowerOpen ABI C stack frame   */
436         _node(backlink)
437         _node(crsave)
438         _node(savelr)
439         _field(unused, 16)
440         _node(savetoc)
441         _struct_label(params)
442         _node(param0)
443         _node(param1)
444         _node(param2)
445         _node(param3)
446         _node(param4)
447         _node(param5)
448         _node(param6)
449         _node(param7)
450         _struct_label(minsiz)
451        _ends
452
453
454        _struct(eabi_c_frame,0)
455         _word(backlink)
456         _word(savelr)
457         _word(param0)
458         _word(param1)
459         _word(param2)
460         _word(param3)
461         _word(param4)
462         _word(param5)
463         _word(param6)
464         _word(param7)
465         _struct_label(minsiz)
466        _ends
467
468        /* For entry to variable-argument-list functions   */
469        /* (e.g., via callback)   */
470        _struct(varargs_eabi_c_frame,0)
471         _word(backlink)
472         _word(savelr)
473         _struct_label(va_list)
474         _word(flags)           /* gpr count byte, fpr count byte, padding   */
475         _word(overflow_arg_area)
476         _word(reg_save_area)
477         _field(padding,4)
478         _struct_label(regsave)
479         _field(gp_save,8*4)
480         _field(fp_save,8*8)
481         _word(old_backlink)
482         _word(old_savelr)
483         _struct_label(incoming_stack_args)
484        _ends
485               
486        _struct(lisp_frame,0)
487         _node(backlink)
488         _node(savera0)
489        _ends
490
491        _struct(vector,-fulltag_misc)
492         _node(header)
493         _struct_label(data)
494        _ends
495
496        _struct(binding,0)
497         _node(link)
498         _node(sym)
499         _node(val)
500        _ends
501
502
503/* Nilreg-relative globals.  Talking the assembler into doing  */
504/* something reasonable here  */
505/* is surprisingly hard.   */
506
507symbol_extra = symbol.size-fulltag_symbol
508
509       
510        _struct(nrs,0x3020)
511         _struct_pad(fulltag_symbol)
512         _struct_label(tsym)
513         _struct_pad(symbol_extra)      /* t    */
514
515         _struct_pad(fulltag_symbol)
516         _struct_label(nil)
517         _struct_pad(symbol_extra)      /* nil    */
518
519         _struct_pad(fulltag_symbol)
520         _struct_label(errdisp)
521         _struct_pad(symbol_extra)      /* %err-disp    */
522
523         _struct_pad(fulltag_symbol)
524         _struct_label(cmain)
525         _struct_pad(symbol_extra)      /* cmain    */
526
527         _struct_pad(fulltag_symbol)
528         _struct_label(eval)
529         _struct_pad(symbol_extra)      /* eval    */
530 
531         _struct_pad(fulltag_symbol)
532         _struct_label(appevalfn)
533         _struct_pad(symbol_extra)      /* apply-evaluated-function    */
534
535         _struct_pad(fulltag_symbol)
536         _struct_label(error)
537         _struct_pad(symbol_extra)      /* error    */
538
539         _struct_pad(fulltag_symbol)
540         _struct_label(defun)
541         _struct_pad(symbol_extra)      /* %defun    */
542
543         _struct_pad(fulltag_symbol)
544         _struct_label(defvar)
545         _struct_pad(symbol_extra)      /* %defvar    */
546
547         _struct_pad(fulltag_symbol)
548         _struct_label(defconstant)
549         _struct_pad(symbol_extra)      /* %defconstant    */
550
551         _struct_pad(fulltag_symbol)
552         _struct_label(macrosym)
553         _struct_pad(symbol_extra)      /* %macro    */
554
555         _struct_pad(fulltag_symbol)
556         _struct_label(kernelrestart)
557         _struct_pad(symbol_extra)      /* %kernel-restart    */
558
559         _struct_pad(fulltag_symbol)
560         _struct_label(package)
561         _struct_pad(symbol_extra)      /* *package*    */
562
563         _struct_pad(fulltag_symbol)
564         _struct_label(total_bytes_freed)               /* *total-bytes-freed*   */
565         _struct_pad(symbol_extra)
566
567         _struct_pad(fulltag_symbol)
568         _struct_label(kallowotherkeys)
569         _struct_pad(symbol_extra)      /* allow-other-keys    */
570
571         _struct_pad(fulltag_symbol)
572         _struct_label(toplcatch)
573         _struct_pad(symbol_extra)      /* %toplevel-catch%    */
574
575         _struct_pad(fulltag_symbol)
576         _struct_label(toplfunc)
577         _struct_pad(symbol_extra)      /* %toplevel-function%    */
578
579         _struct_pad(fulltag_symbol)
580         _struct_label(callbacks)
581         _struct_pad(symbol_extra)      /* %pascal-functions%    */
582
583         _struct_pad(fulltag_symbol)
584         _struct_label(allmeteredfuns)
585         _struct_pad(symbol_extra)      /* *all-metered-functions*    */
586
587         _struct_pad(fulltag_symbol)
588         _struct_label(total_gc_microseconds)           /* *total-gc-microseconds*   */
589         _struct_pad(symbol_extra)
590
591         _struct_pad(fulltag_symbol)
592         _struct_label(builtin_functions)               /* %builtin-functions%   */
593         _struct_pad(symbol_extra)               
594
595         _struct_pad(fulltag_symbol)
596         _struct_label(udf)
597         _struct_pad(symbol_extra)      /* %unbound-function%    */
598
599         _struct_pad(fulltag_symbol)
600         _struct_label(init_misc)
601         _struct_pad(symbol_extra)      /* %init-misc   */
602
603         _struct_pad(fulltag_symbol)
604         _struct_label(macro_code)
605         _struct_pad(symbol_extra)      /* %macro-code%   */
606
607         _struct_pad(fulltag_symbol)
608         _struct_label(closure_code)
609         _struct_pad(symbol_extra)      /* %closure-code%   */
610
611         _struct_pad(fulltag_symbol)
612         _struct_label(new_gcable_ptr) /* %new-gcable-ptr   */
613         _struct_pad(symbol_extra)
614       
615         _struct_pad(fulltag_symbol)
616         _struct_label(gc_event_status_bits)
617         _struct_pad(symbol_extra)      /* *gc-event-status-bits*    */
618
619         _struct_pad(fulltag_symbol)
620         _struct_label(post_gc_hook)
621         _struct_pad(symbol_extra)      /* *post-gc-hook*    */
622
623         _struct_pad(fulltag_symbol)
624         _struct_label(handlers)
625         _struct_pad(symbol_extra)      /* %handlers%    */
626
627
628         _struct_pad(fulltag_symbol)
629         _struct_label(all_packages)
630         _struct_pad(symbol_extra)      /* %all-packages%    */
631
632         _struct_pad(fulltag_symbol)
633         _struct_label(keyword_package)
634         _struct_pad(symbol_extra)      /* *keyword-package*    */
635
636         _struct_pad(fulltag_symbol)
637         _struct_label(finalization_alist)
638         _struct_pad(symbol_extra)      /* %finalization-alist%    */
639
640         _struct_pad(fulltag_symbol)
641         _struct_label(foreign_thread_control)
642         _struct_pad(symbol_extra)      /* %foreign-thread-control    */
643
644        _ends
645
646define([def_header],[
647$1 = ($2<<num_subtag_bits)|$3])
648
649        def_header(double_float_header,2,subtag_double_float)
650        def_header(two_digit_bignum_header,2,subtag_bignum)
651        def_header(three_digit_bignum_header,3,subtag_bignum)
652        def_header(four_digit_bignum_header,4,subtag_bignum)
653        def_header(five_digit_bignum_header,5,subtag_bignum)       
654        def_header(symbol_header,symbol.element_count,subtag_symbol)
655        def_header(value_cell_header,1,subtag_value_cell        )
656        def_header(macptr_header,macptr.element_count,subtag_macptr)
657        def_header(vectorH_header,vectorH.element_count,subtag_vectorH)
658
659        include(errors.s)
660
661/* Symbol bits that we care about  */
662       
663sym_vbit_bound = (0+fixnum_shift)
664sym_vbit_bound_mask = (1<<sym_vbit_bound)
665sym_vbit_const = (1+fixnum_shift)
666sym_vbit_const_mask = (1<<sym_vbit_const)
667
668        _struct(area,0)
669         _node(pred) 
670         _node(succ) 
671         _node(low) 
672         _node(high) 
673         _node(active) 
674         _node(softlimit) 
675         _node(hardlimit) 
676         _node(code) 
677         _node(markbits) 
678         _node(ndwords) 
679         _node(older) 
680         _node(younger) 
681         _node(h) 
682         _node(sofprot) 
683         _node(hardprot) 
684         _node(owner) 
685         _node(refbits) 
686         _node(nextref) 
687        _ends
688
689
690
691TCR_BIAS = 0
692               
693/*  Thread context record.  */
694
695        _struct(tcr,TCR_BIAS)
696         _node(prev)            /* in doubly-linked list   */
697         _node(next)            /* in doubly-linked list   */
698         _node(single_float_convert)
699         _node(linear)          /* our linear (non-segment-based) address.   */
700         _node(save_rbp)        /* lisp RBP when in foreign code    */
701         _word(lisp_mxcsr)
702         _word(foreign_mxcsr)   
703         _node(db_link)         /* special binding chain head   */
704         _node(catch_top)       /* top catch frame   */
705         _node(save_vsp)        /* VSP when in foreign code   */
706         _node(save_tsp)        /* TSP when in foreign code   */
707         _node(foreign_sp)      /* Saved foreign SP when in lisp code   */
708         _node(cs_area)         /* cstack area pointer   */
709         _node(vs_area)         /* vstack area pointer   */
710         _node(ts_area)         /* tstack area pointer   */
711         _node(cs_limit)        /* cstack overflow limit   */
712         _word(bytes_consed_low)
713         _word(bytes_consed_high)
714         _node(log2_allocation_quantum)
715         _node(interrupt_pending)
716         _node(xframe)          /* per-thread exception frame list   */
717         _node(errno_loc)       /* per-thread  errno location   */
718         _node(ffi_exception)   /* mxcsr exception bits from ff-call   */
719         _node(osid)            /* OS thread id   */
720         _node(valence)         /* odd when in foreign code       */
721         _node(foreign_exception_status)
722         _node(native_thread_info)
723         _node(native_thread_id)
724         _node(last_allocptr)
725         _node(save_allocptr)
726         _node(save_allocbase)
727         _node(reset_completion)
728         _node(activate)
729         _node(suspend_count)
730         _node(suspend_context)
731         _node(pending_exception_context)
732         _node(suspend)         /* semaphore for suspension notify   */
733         _node(resume)          /* sempahore for resumption notify   */
734         _word(flags_pad)
735         _word(flags)     
736         _node(gc_context)
737         _node(termination_semaphore)
738         _node(unwinding)
739         _node(tlb_limit)
740         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer   */
741         _node(shutdown_count)
742         _node(next_tsp)
743         _node(safe_ref_address)
744        _ends
745
746
747       
748TCR_FLAG_BIT_FOREIGN = fixnum_shift
749TCR_FLAG_BIT_AWAITING_PRESET = (fixnum_shift+1) 
750
751target_most_positive_fixnum = 1152921504606846975
752target_most_negative_fixnum = -1152921504606846976
753
754
755lisp_globals_limit = 0x3000
756       
757INTERRUPT_LEVEL_BINDING_INDEX = fixnumone
758
759       
760                       
761               
Note: See TracBrowser for help on using the repository browser.