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

Last change on this file since 527 was 527, checked in by gb, 16 years ago

Flesh out a bit.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 18.9 KB
RevLine 
[527]1/*
2   Copyright (C) 1994-2001 Digitool, Inc
3   This file is part of OpenMCL. 
4
5   OpenMCL is licensed under the terms of the Lisp Lesser GNU Public
6   License , known as the LLGPL and distributed with OpenMCL as the
7   file "LICENSE".  The LLGPL consists of a preamble and the LGPL,
8   which is distributed with OpenMCL as the file "LGPL".  Where these
9   conflict, the preamble takes precedence. 
10
11   OpenMCL is referenced in the preamble as the "LIBRARY."
12
13   The LLGPL is also available online at
14   http://opensource.franz.com/preamble.html
15*/
16
17
18nbits_in_word = 64
19nbits_in_byte = 8
20ntagbits = 4
21nlisptagbits = 3
22nfixnumtagbits = 3
23num_subtag_bits = 8
24fixnumshift = 3
25fixnum_shift = 3
26fulltagmask = 15
27tagmask = 7
28fixnummask = 7
29ncharcodebits = 16
30charcode_shift = nbits_in_word-ncharcodebits
31word_shift = 3
32node_size = 8
33dnode_size = 16
34dnode_align_bits = 4
35
36fixnumone = (1<<fixnumshift)
37fixnum_one = fixnumone
38fixnum1 = fixnumone
39
40
41
42tag_fixnum = 0
43
44fulltag_even_fixnum = 0
45fulltag_imm_0 = 1
46fulltag_immheader_0 = 2
47fulltag_nodeheader_0 = 3
48fulltag_cons = 4
49fulltag_imm_1 = 5
50fulltag_immheader_1 = 6
51fulltag_nodeheader_1 = 7
52fulltag_odd_fixnum = 8
53fulltag_imm_2 = 9
54fulltag_immheader_2 = 10
55fulltag_nodeheader_2 = 11
56fulltag_misc = 12
57fulltag_imm_3 = 13
58fulltag_immheader_3 = 14
59fulltag_nodeheader_3 = 15
60
61define([define_subtag],[
62subtag_$1 = ($2 | ($3 << ntagbits))
63])
64                       
65cl_array_subtag_mask = 0x80
66define([define_cl_array_subtag],[
67define_subtag($1,(cl_array_subtag_mask|$2),$3)
68])
69
70define_cl_array_subtag(arrayH,fulltag_nodeheader_1,0)
71define_cl_array_subtag(vectorH,fulltag_nodeheader_2,0)
72define_cl_array_subtag(simple_vector,fulltag_nodeheader_3,0)
73min_vector_subtag = subtag_vectorH     
74       
75ivector_class_64_bit = fulltag_immheader_3
76ivector_class_32_bit = fulltag_immheader_2
77ivector_class_other_bit = fulltag_immheader_1
78ivector_class_8_bit = fulltag_immheader_0
79
80define_cl_array_subtag(s64_vector,ivector_class_64_bit,1)
81define_cl_array_subtag(u64_vector,ivector_class_64_bit,2)
82define_cl_array_subtag(double_float_vector,ivector_class_64_bit,4)
83define_cl_array_subtag(s32_vector,ivector_class_32_bit,1)
84define_cl_array_subtag(u32_vector,ivector_class_32_bit,2)
85define_cl_array_subtag(single_float_vector,ivector_class_32_bit,3)
86define_cl_array_subtag(s16_vector,ivector_class_other_bit,1)
87define_cl_array_subtag(u16_vector,ivector_class_other_bit,2)
88define_cl_array_subtag(bit_vector,ivector_class_other_bit,7)
89define_cl_array_subtag(s8_vector,ivector_class_8_bit,1)
90define_cl_array_subtag(u8_vector,ivector_class_8_bit,2)
91define_cl_array_subtag(simple_base_string,ivector_class_8_bit,5)
92
93/* There's some room for expansion in non-array ivector space. */
94define_subtag(bignum,ivector_class_64_bit,0)
95define_subtag(macptr,ivector_class_64_bit,1)
96define_subtag(dead_macptr,ivector_class_64_bit,2)
97define_subtag(double_float,ivector_class_64_bit,3)
98define_subtag(code_vector,ivector_class_32_bit,0)
99define_subtag(xcode_vector,ivector_class_32_bit,1)
100
101;; Size doesn't matter for non-CL-array gvectors; I can't think of a good
102;; reason to classify them in any particular way.  Let's put funcallable
103;; things in the first slice by themselves, though it's not clear that
104;; that helps FUNCALL much.
105gvector_funcallable = fulltag_nodeheader_0
106       
107define_subtag(function,gvector_funcallable,0)
108define_subtag(symbol,gvector_funcallable,1)
109define_subtag(catch_frame,fulltag_nodeheader_1,0)
110define_subtag(lisp_thread,fulltag_nodeheader_1,1)
111define_subtag(lock,fulltag_nodeheader_1,2)
112define_subtag(hash_vector,fulltag_nodeheader_1,3)
113define_subtag(pool,fulltag_nodeheader_1,4)
114define_subtag(weak,fulltag_nodeheader_1,5)
115define_subtag(package,fulltag_nodeheader_1,6)
116define_subtag(svar,fulltag_nodeheader_1,7)
117define_subtag(slot_vector,0,fulltag_nodeheader_2)
118define_subtag(instance,1,fulltag_nodeheader_2)
119define_subtag(struct,2,fulltag_nodeheader_2)
120define_subtag(istruct,3,fulltag_nodeheader_2)
121define_subtag(value_cell,4,fulltag_nodeheader_2)
122define_subtag(xfunction,5,fulltag_nodeheader_2)
123                       
124nil_value = (0x2000+fulltag_misc+symbol.size)
125t_value = (0x2000+fulltag_misc)
126misc_bias = fulltag_misc
127cons_bias = fulltag_cons
128
129       
130misc_header_offset = -fulltag_misc
131misc_subtag_offset = misc_header_offset+7       /* low byte of header */
132misc_data_offset = misc_header_offset+4         /* first word of data */
133misc_dfloat_offset = misc_header_offset         /* double-floats are doubleword-aligned */
134
135define_subtag(single_float,fulltag_imm_0,0)
136define_subtag(slot_unbound,fulltag_imm_0,1)
137slot_unbound_marker = subtag_slot_unbound
138define_subtag(illegal,fulltag_imm_0,2)
139illegal_marker = subtag_illegal
140
141define_subtag(go_tag,fulltag_imm_1,0)
142define_subtag(block_tag,fulltag_imm_1,1)
143define_subtag(character,fulltag_imm_2,0)
144define_subtag(unbound,fulltag_imm_3,0)
145unbound_marker = subtag_unbound
146undefined = unbound_marker
147define_subtag(no_thread_local_binding,fulltag_imm_3,1)
148
149       
150max_64_bit_constant_index = ((0x7fff + misc_dfloat_offset)>>3)
151max_32_bit_constant_index = ((0x7fff + misc_data_offset)>>2)
152max_16_bit_constant_index = ((0x7fff + misc_data_offset)>>1)
153max_8_bit_constant_index = (0x7fff + misc_data_offset)
154max_1_bit_constant_index = ((0x7fff + misc_data_offset)<<5)
155
156
157       
158/* The objects themselves look something like this: */
159       
160/* Order of CAR and CDR doesn]t seem to matter much - there aren't */
161/* too many tricks to be played with predecrement/preincrement addressing. */
162/* Keep them in the confusing MCL 3.0 order, to avoid confusion. */
163        _struct(cons,-cons_bias)
164         _node(cdr)
165         _node(car)
166        _ends
167       
168        _structf(ratio)
169         _node(numer)
170         _node(denom)
171        _endstructf
172       
173        _structf(double_float)
174         _word(pad)
175         _dword(value)
176        _endstructf
177       
178        _structf(macptr)
179         _node(address)
180         _node(domain)
181         _node(type)
182        _endstructf
183       
184/* Functions are of (conceptually) unlimited size. */
185        _struct(_function,-misc_bias)
186         _node(header)
187         _node(codevector)
188        _ends
189
190        _struct(tsp_frame,0)
191         _node(backlink)
192         _node(type)
193         _struct_label(fixed_overhead)
194         _struct_label(data_offset)
195        _ends
196
197
198
199        _structf(symbol)
200         _node(pname)
201         _node(vcell)
202         _node(fcell)
203         _node(package_plist)
204         _node(flags)
205        _endstructf
206
207        _structf(catch_frame)
208         _node(catch_tag)       /* #<unbound> -> unwind-protect, else catch */
209         _node(link)            /* backpointer to previous catch frame */
210         _node(mvflag)          /* 0 if single-valued catch, fixnum 1 otherwise */
211         _node(csp)             /* pointer to lisp_frame on csp */
212         _node(db_link)         /* head of special-binding chain */
213         _field(regs,8*node_size)       /* save7-save0 */
214         _node(xframe)          /* exception frame chain */
215         _node(tsp_segment)     /* maybe someday; padding for now */
216        _endstructf
217
218
219        _structf(vectorH)
220         _node(logsize)
221         _node(physsize)
222         _node(data_vector)
223         _node(displacement)
224         _node(flags)
225        _endstructf     
226       
227        _structf(svar)          /* shallow-bound special-variable info */
228         _node(symbol)
229         _node(idx)
230        _endstructf
231       
232        _struct(c_frame,0)      /* PowerOpen ABI C stack frame */
233         _node(backlink)
234         _node(crsave)
235         _node(savelr)
236         _field(unused, 8)
237         _node(savetoc)
238         _struct_label(params)
239         _node(param0)
240         _node(param1)
241         _node(param2)
242         _node(param3)
243         _node(param4)
244         _node(param5)
245         _node(param6)
246         _node(param7)
247         _struct_label(minsiz)
248        _ends
249
250
251        _struct(eabi_c_frame,0)
252         _word(backlink) 
253         _word(savelr)
254         _word(param0)
255         _word(param1)
256         _word(param2)
257         _word(param3)
258         _word(param4)
259         _word(param5)
260         _word(param6)
261         _word(param7)
262         _struct_label(minsiz)
263        _ends
264
265        /* For entry to variable-argument-list functions
266          (e.g., via callback) */
267        _struct(varargs_eabi_c_frame,0)
268         _word(backlink)
269         _word(savelr)
270         _struct_label(va_list)
271         _word(flags)           /* gpr count byte, fpr count byte, padding */
272         _word(overflow_arg_area)
273         _word(reg_save_area)
274         _field(padding,4)
275         _struct_label(regsave)
276         _field(gp_save,8*4)
277         _field(fp_save,8*8)
278         _word(old_backlink)
279         _word(old_savelr)
280         _struct_label(incoming_stack_args)
281        _ends
282               
283        _struct(lisp_frame,0)
284         _node(backlink) 
285         _node(savefn) 
286         _node(savelr) 
287         _node(savevsp) 
288        _ends
289
290        _struct(vector,-fulltag_misc)
291         _node(header)
292         _struct_label(data)
293        _ends
294
295        _struct(binding,0)
296         _node(link)
297         _node(sym)
298         _node(val)
299        _ends
300
301
302/* Nilreg-relative globals.  Talking the assembler into doing something reasonable here */
303/* is surprisingly hard. */
304
305symbol_extra = symbol.size-fulltag_misc
306num_lisp_globals = 48            /* MUST UPDATE THIS !!! */
307       
308        _struct(lisp_globals,0x1000)
309         _struct_pad((512-num_lisp_globals)*node_size)
310         _node(initial_tcr)             /* initial thread tcr */
311         _node(image_name)              /* --image-name argument */
312         _node(BADfpscr_save_high)              /* high word of FP reg used to save FPSCR */
313         _node(BADfpscr_save)              /* saved FPSCR */
314         _node(batch_flag)              /* -b */
315         _node(host_platform)           /* for runtime platform-specific stuff */
316         _node(argv)                    /* address of argv[0] */
317         _node(errno)                   /* ADDRESS of errno */
318         _node(tenured_area)            /* the tenured_area */
319         _node(oldest_ephemeral)        /* dword address of oldest ephemeral object or 0 */
320         _node(lisp_exit_hook)          /* install foreign exception_handling */
321         _node(lisp_return_hook)        /* install lisp exception_handling */
322         _node(double_float_one)        /* high half of 1.0d0 */
323         _node(short_float_zero)        /* low half of 1.0d0 */
324         _node(doh_head)                /* creole objects header */
325         _node(metering_info)           /* address of lisp_metering global */
326         _node(in_gc)                   /* non-zero when GC active */
327         _node(lexpr_return1v)          /* simpler when &lexpr called for single value. */
328         _node(lexpr_return)            /* magic &lexpr return code. */
329         _node(all_areas)               /* doubly-linked list of all memory areas */
330         _node(BAD_cs_overflow_limit)   /* limit for control-stack overflow check */
331         _node(BAD_current_ts)          /* current temp-stack area */
332         _node(BAD_current_vs)          /* current value-stack area */
333         _node(statically_linked)       /* non-zero if -static */
334         _node(heap_end)                /* end of lisp heap */
335         _node(heap_start)              /* start of lisp heap */
336         _node(gcable_pointers)         /* linked-list of weak macptrs. */
337         _node(gc_num)                  /* fixnum: GC call count. */
338         _node(fwdnum)                  /* fixnum: GC "forwarder" call count. */
339         _node(altivec_present)         /* non-zero when AltiVec available */
340         _node(tb_trap_call)            /* CallUniversalProc]s descriptor */
341         _node(os_trap_call)            /* CallOSTrapUnivesalProc]s descriptor */
342         _node(gc_inhibit_count)
343         _node(intflag)                 /* sigint pending */
344         _node(block_tag_counter)       /* counter for (immediate) block tag */
345         _node(go_tag_counter)          /* counter for (immediate) go tag */
346         _node(exception_lock)
347         _node(BADgc_lock)
348         _node(tcr_key)                 /* tsd key for per-thread tcr */
349         _node(ret1val_addr)            /* address of "dynamic" subprims magic values return addr */
350         _node(subprims_base)           /* address of dynamic subprims jump table */
351         _node(appmain)                 /* probably don]t really need this */
352         _node(emulator_registers)      /* where the 68K emulator stores the  emulated regs */
353         _node(tcr_lock)                /* this thread]s exception frame chain */
354         _node(kernel_imports)          /* some things we need imported for us */
355         _node(interrupt_signal)        /* signal used by PROCESS-INTERRUPT */
356         _node(tcr_count)               /* tcr_id for next tcr */
357         _node(get_tcr)                 /* address of get_tcr() */     
358        _ends
359       
360lisp_globals.saveTOC = lisp_globals.emulator_registers
361lisp_globals.saveR13 = lisp_globals.appmain
362
363       
364        _struct(nrs,0x2000)
365         _struct_pad(fulltag_misc)
366         _struct_label(tsym)
367         _struct_pad(symbol_extra)      /* t  */
368
369         _struct_pad(fulltag_misc)
370         _struct_label(nil)
371         _struct_pad(symbol_extra)      /* nil  */
372
373         _struct_pad(fulltag_misc)
374         _struct_label(errdisp)
375         _struct_pad(symbol_extra)      /* %err-disp  */
376
377         _struct_pad(fulltag_misc)
378         _struct_label(cmain)
379         _struct_pad(symbol_extra)      /* cmain  */
380
381         _struct_pad(fulltag_misc)
382         _struct_label(eval)
383         _struct_pad(symbol_extra)      /* eval  */
384 
385         _struct_pad(fulltag_misc)
386         _struct_label(appevalfn)
387         _struct_pad(symbol_extra)      /* apply-evaluated-function  */
388
389         _struct_pad(fulltag_misc)
390         _struct_label(error)
391         _struct_pad(symbol_extra)      /* error  */
392
393         _struct_pad(fulltag_misc)
394         _struct_label(defun)
395         _struct_pad(symbol_extra)      /* %defun  */
396
397         _struct_pad(fulltag_misc)
398         _struct_label(defvar)
399         _struct_pad(symbol_extra)      /* %defvar  */
400
401         _struct_pad(fulltag_misc)
402         _struct_label(defconstant)
403         _struct_pad(symbol_extra)      /* %defconstant  */
404
405         _struct_pad(fulltag_misc)
406         _struct_label(macrosym)
407         _struct_pad(symbol_extra)      /* %macro  */
408
409         _struct_pad(fulltag_misc)
410         _struct_label(kernelrestart)
411         _struct_pad(symbol_extra)      /* %kernel-restart  */
412
413         _struct_pad(fulltag_misc)
414         _struct_label(package)
415         _struct_pad(symbol_extra)      /* *package*  */
416
417         _struct_pad(fulltag_misc)
418         _struct_label(total_bytes_freed)               /* *total-bytes-freed* */
419         _struct_pad(symbol_extra)
420
421         _struct_pad(fulltag_misc)
422         _struct_label(kallowotherkeys)
423         _struct_pad(symbol_extra)      /* allow-other-keys  */
424
425         _struct_pad(fulltag_misc)
426         _struct_label(toplcatch)
427         _struct_pad(symbol_extra)      /* %toplevel-catch%  */
428
429         _struct_pad(fulltag_misc)
430         _struct_label(toplfunc)
431         _struct_pad(symbol_extra)      /* %toplevel-function%  */
432
433         _struct_pad(fulltag_misc)
434         _struct_label(callbacks)
435         _struct_pad(symbol_extra)      /* %pascal-functions%  */
436
437         _struct_pad(fulltag_misc)
438         _struct_label(allmeteredfuns)
439         _struct_pad(symbol_extra)      /* *all-metered-functions*  */
440
441         _struct_pad(fulltag_misc)
442         _struct_label(total_gc_microseconds)           /* *total-gc-microseconds* */
443         _struct_pad(symbol_extra)
444
445         _struct_pad(fulltag_misc)
446         _struct_label(builtin_functions)               /* %builtin-functions% */
447         _struct_pad(symbol_extra)               
448
449         _struct_pad(fulltag_misc)
450         _struct_label(udf)
451         _struct_pad(symbol_extra)      /* %unbound-function%  */
452
453         _struct_pad(fulltag_misc)
454         _struct_label(init_misc)
455         _struct_pad(symbol_extra)      /* %init-misc */
456
457         _struct_pad(fulltag_misc)
458         _struct_label(macro_code)
459         _struct_pad(symbol_extra)      /* %macro-code% */
460
461         _struct_pad(fulltag_misc)
462         _struct_label(closure_code)
463         _struct_pad(symbol_extra)      /* %closure-code% */
464
465         _struct_pad(fulltag_misc)
466         _struct_label(new_gcable_ptr) /* %new-gcable-ptr */
467         _struct_pad(symbol_extra)
468       
469         _struct_pad(fulltag_misc)
470         _struct_label(gc_event_status_bits)
471         _struct_pad(symbol_extra)      /* *gc-event-status-bits*  */
472
473         _struct_pad(fulltag_misc)
474         _struct_label(post_gc_hook)
475         _struct_pad(symbol_extra)      /* *post-gc-hook*  */
476
477         _struct_pad(fulltag_misc)
478         _struct_label(handlers)
479         _struct_pad(symbol_extra)      /* %handlers%  */
480
481
482         _struct_pad(fulltag_misc)
483         _struct_label(all_packages)
484         _struct_pad(symbol_extra)      /* %all-packages%  */
485
486         _struct_pad(fulltag_misc)
487         _struct_label(keyword_package)
488         _struct_pad(symbol_extra)      /* *keyword-package*  */
489
490         _struct_pad(fulltag_misc)
491         _struct_label(finalization_alist)
492         _struct_pad(symbol_extra)      /* %finalization-alist%  */
493
494         _struct_pad(fulltag_misc)
495         _struct_label(foreign_thread_control)
496         _struct_pad(symbol_extra)      /* %foreign-thread-control  */
497
498        _ends
499
500define([def_header],[
501$1 = ($2<<num_subtag_bits)|$3])
502
503        def_header(double_float_header,double_float.element_count,subtag_double_float)
504        def_header(one_digit_bignum_header,1,subtag_bignum)
505        def_header(two_digit_bignum_header,2,subtag_bignum)
506        def_header(three_digit_bignum_header,3,subtag_bignum)
507        def_header(symbol_header,symbol.element_count,subtag_symbol)
508        def_header(value_cell_header,1,subtag_value_cell        )
509        def_header(macptr_header,macptr.element_count,subtag_macptr)
510        def_header(vectorH_header,vectorH.element_count,subtag_vectorH)
511
512        include(errors.s)
513
514/* Symbol bits that we care about */
515sym_vbit_bound = (0+fixnum_shift)
516sym_vbit_bound_mask = (1<<sym_vbit_bound)
517sym_vbit_const = (1+fixnum_shift)
518sym_vbit_const_mask = (1<<sym_vbit_const)
519
520        _struct(area,0)
521         _node(pred)
522         _node(succ)
523         _node(low)
524         _node(high)
525         _node(active)
526         _node(softlimit)
527         _node(hardlimit)
528         _node(code)
529         _node(markbits)
530         _node(ndwords)
531         _node(older)
532         _node(younger)
533         _node(h)
534         _node(sofprot)
535         _node(hardprot)
536         _node(owner)
537         _node(refbits)
538         _node(nextref)
539        _ends
540
541
542/* This is only referenced by c->lisp code that needs to save/restore C NVRs in a TSP frame. */
543        _struct(c_reg_save,0)
544         _node(tsp_link)        /* backpointer */
545         _node(tsp_mark)        /* frame type */
546         _node(save_fpscr)      /* for Cs FPSCR */
547         _field(save_gprs,19*4) /* r13-r31 */
548         _dword(save_fp_zero)   /* for fp_zero */
549         _dword(save_fps32conv)
550        _ends
551
552/* Indices in %builtin-functions% */
553_builtin_plus = 0       /* +-2 */
554_builtin_minus = 1      /* --2 */
555_builtin_times = 2      /* *-2 */
556_builtin_div = 3        /* /-2 */
557_builtin_eq = 4         /* =-2 */
558_builtin_ne = 5         /* /-2 */
559_builtin_gt = 6         /* >-2 */
560_builtin_ge = 7         /* >=-2 */
561_builtin_lt = 8         /* <-2 */
562_builtin_le = 9         /* <=-2 */
563_builtin_eql = 10       /* eql */
564_builtin_length = 11    /* length */
565_builtin_seqtype = 12   /* sequence-type */
566_builtin_assq = 13      /* assq */
567_builtin_memq = 14      /* memq */
568_builtin_logbitp = 15   /* logbitp */
569_builtin_logior = 16    /* logior-2 */
570_builtin_logand = 17    /* logand-2 */
571_builtin_ash = 18       /* ash */
572_builtin_negate = 19    /* %negate */
573_builtin_logxor = 20    /* logxor-2 */
574_builtin_aref1 = 21     /* %aref1 */
575_builtin_aset1 = 22     /* %aset1 */
576
577        /* FPSCR status bits */
578fpscr_FX = 0
579fpscr_FEX = 1
580fpscr_VX = 2
581fpscr_OX = 3
582fpscr_UX = 4
583fpscr_ZX = 5
584fpscr_XX = 6
585        /* FPSCR control bits */
586fpscr_VE = 24
587fpscr_OE = 25
588fpscr_UE = 26
589fpscr_ZE = 27
590fpscr_XE = 28
591       
592
593/*
594  This should be (a) an (UNSIGNED-BYTE 16) and (b) one less than
595  TSTACK_SOFTPROT (defined in "area.h")
596*/             
597tstack_alloc_limit = 0xffff
598
599/*
600  Thread context record.
601*/
602        _struct(tcr,0)
603         _node(prev)            /* in doubly-linked list */
604         _node(next)            /* in doubly-linked list */
605         _node(lisp_fpscr)      /* lisp thread's fpscr (in low word) */
606         _node(lisp_fpscr_low)
607         _node(db_link)         /* special binding chain head */
608         _node(catch_top)       /* top catch frame */
609         _node(save_vsp)        /* VSP when in foreign code */
610         _node(save_tsp)        /* TSP when in foreign code */
611         _node(cs_area)         /* cstack area pointer */
612         _node(vs_area)         /* vstack area pointer */
613         _node(ts_area)         /* tstack area pointer */
614         _node(cs_limit)        /* cstack overflow limit */
615         _node(bytes_consed_high)
616         _node(bytes_consed_low)
617         _node(interrupt_level)
618         _node(interrupt_pending)
619         _node(xframe)          /* per-thread exception frame list */
620         _node(errno_loc)       /* per-thread  errno location */
621         _node(ffi_exception)   /* fpscr exception bits from ff-call */
622         _node(osid)            /* OS thread id */
623         _node(valence)         /* odd when in foreign code */ 
624         _node(foreign_exception_status)
625         _node(native_thread_info)
626         _node(native_thread_id)
627         _node(last_allocptr)
628         _node(save_allocptr)
629         _node(save_allocbase)
630         _node(reset_completion)
631         _node(activate)
632         _node(suspend_count)
633         _node(suspend_context)
634         _node(pending_exception_context)
635         _node(suspend)         /* semaphore for suspension notify */
636         _node(resume)          /* sempahore for resumption notify */
637         _node(flags)     
638         _node(gc_context)
639         _node(suspend_total)
640         _node(suspend_total_on_exception_entry)
641         _node(tlb_limit)
642         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer */
643         _node(shutdown_count)
644        _ends
645
646TCR_FLAG_BIT_FOREIGN = fixnum_shift
647TCR_FLAG_BIT_AWAITING_PRESET = (fixnum_shift+1) 
648
649nil_value = 0x2000+symbol.size+fulltag_misc
650       
651define([RESERVATION_DISCHARGE],0x1008)
Note: See TracBrowser for help on using the repository browser.