source: trunk/ccl/lisp-kernel/ppc-constants32.s @ 5649

Last change on this file since 5649 was 5649, checked in by gb, 14 years ago

Static area (including NIL) now one page higher on ppc32, as well.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 18.9 KB
Line 
1/*   Copyright (C) 1994-2001 Digitool, Inc */
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
16define([rcontext],[r13])
17       
18nbits_in_word = 32
19nbits_in_byte = 8
20ntagbits = 3    /* But only 2 are significant to lisp */
21nlisptagbits = 2
22nfixnumtagbits = 2
23num_subtag_bits = 8
24fixnumshift = 2
25fixnum_shift = 2
26fulltagmask = 7
27tagmask = 3
28fixnummask = 3
29ncharcodebits = 24              /* arguably, we're only using the low 8 */
30charcode_shift = nbits_in_word-ncharcodebits
31word_shift = 2
32node_size = 4
33dnode_size = 8
34dnode_align_bits = 3
35dnode_shift = dnode_align_bits
36bitmap_shift = 5
37
38
39fixnumone = (1<<fixnumshift)
40fixnum_one = fixnumone
41fixnum1 = fixnumone
42
43
44/* Tags. */
45/* There are two-bit tags and three-bit tags. */
46/* A FULLTAG is the value of the low three bits of a tagged object. */
47/* A TAG is the value of the low two bits of a tagged object. */
48/* A TYPECODE is either a TAG or the value of a "tag-misc" objects header-byte. */
49
50/* There are 4 primary TAG values.  Any object which lisp can "see" can be classified */
51/* by its TAG.  (Some headers have FULLTAGS that are congruent modulo 4 with the */
52/* TAGS of other objects, but lisp can't "see" headers.) */
53
54
55tag_fixnum = 0  /* All fixnums, whether odd or even */
56tag_list = 1    /* Conses and NIL */
57tag_misc = 2    /* Heap-consed objects other than lists: vectors, symbols, functions, floats ... */
58tag_imm = 3     /* Immediate-objects: characters, UNBOUND, other markers. */
59
60
61/*  And there are 8 FULLTAG values.  Note that NIL has its own FULLTAG (congruent mod 4 to tag-list), */
62/*  that FULLTAG-MISC is > 4 (so that code-vector entry-points can be branched to, since the low */
63/*  two bits of the PC are ignored) and that both FULLTAG-MISC and FULLTAG-IMM have header fulltags */
64/*  that share the same TAG. */
65/*  Things that walk memory (and the stack) have to be careful to look at the FULLTAG of each */
66/*  object that they see. */
67
68
69fulltag_even_fixnum = 0 /* I suppose EVENP/ODDP might care; nothing else does. */
70fulltag_cons = 1        /* a real (non_null) cons.  Shares TAG with fulltag_nil. */
71fulltag_nodeheader = 2  /* Header of heap_allocated object that contains lisp_object pointers */
72fulltag_imm = 3 /* a "real" immediate object.  Shares TAG with fulltag_immheader. */
73fulltag_odd_fixnum = 4  /* */
74fulltag_nil = 5 /* NIL and nothing but.  (Note that there]s still a hidden NILSYM.) */
75fulltag_misc = 6        /* Pointer "real" tag_misc object.  Shares TAG with fulltag_nodeheader. */
76fulltag_immheader = 7   /* Header of heap-allocated object that contains unboxed data. */
77
78nil_value = 0x00003015
79misc_bias = fulltag_misc
80cons_bias = tag_list       
81
82/* Functions are of (conceptually) unlimited size. */
83        _struct(_function,-misc_bias)
84         _node(header)
85         _node(codevector)
86        _ends
87
88        _struct(tsp_frame,0)
89         _node(backlink)
90         _node(type)
91         _struct_label(fixed_overhead)
92         _struct_label(data_offset)
93        _ends
94
95/* Order of CAR and CDR doesn]t seem to matter much - there aren]t */
96/* too many tricks to be played with predecrement/preincrement addressing. */
97/* Keep them in the confusing MCL 3.0 order, to avoid confusion. */
98        _struct(cons,-cons_bias)
99         _node(cdr)
100         _node(car)
101        _ends
102       
103misc_header_offset = -fulltag_misc
104misc_subtag_offset = misc_header_offset+3               /* low byte of header */
105misc_data_offset = misc_header_offset+4         /* first word of data */
106misc_dfloat_offset = misc_header_offset+8               /* double-floats are doubleword-aligned */
107
108max_64_bit_constant_index = ((0x7fff + misc_dfloat_offset)>>3)
109max_32_bit_constant_index = ((0x7fff + misc_data_offset)>>2)
110max_16_bit_constant_index = ((0x7fff + misc_data_offset)>>1)
111max_8_bit_constant_index = (0x7fff + misc_data_offset)
112max_1_bit_constant_index = ((0x7fff + misc_data_offset)<<5)
113
114/* T is almost adjacent to NIL: since NIL is a misaligned CONS, it spans */
115/* two doublewords.  The arithmetic difference between T and NIL is */
116/* such that the least-significant bit and exactly one other bit is */
117/* set in the result. */
118
119t_offset = (8+(8-fulltag_nil)+fulltag_misc)
120t_value = nil_value+t_offset
121
122/* The order in which various header values are defined is significant in several ways: */
123/* 1) Numeric subtags precede non-numeric ones; there are further orderings among numeric subtags. */
124/* 2) All subtags which denote CL arrays are preceded by those that don]t, */
125/*    with a further ordering which requires that (< header-arrayH header-vectorH ,@all-other-CL-vector-types) */
126/* 3) The element-size of ivectors is determined by the ordering of ivector subtags. */
127/* 4) All subtags are >= fulltag-immheader . */
128
129define([define_subtag],[
130subtag_$1 = $2|($3<<ntagbits)])
131       
132define([define_imm_subtag],[
133        define_subtag($1,fulltag_immheader,$2)])
134
135       
136define([define_node_subtag],[
137        define_subtag($1,fulltag_nodeheader,$2)])
138
139               
140/*Immediate subtags. */
141        define_subtag(character,fulltag_imm,9)
142        define_subtag(unbound,fulltag_imm,6)
143        define_subtag(illegal,fulltag_imm,10)
144        define_subtag(go_tag,fulltag_imm,12)
145        define_subtag(block_tag,fulltag_imm,24)
146        define_subtag(vsp_protect,fulltag_imm,7)
147        define_subtag(no_thread_local_binding,fulltag_imm,30)
148unbound_marker = subtag_unbound
149undefined = unbound_marker
150illegal_marker = subtag_illegal
151no_thread_local_binding_marker = subtag_no_thread_local_binding
152/*Numeric subtags. */
153
154        define_imm_subtag(bignum,0)
155min_numeric_subtag = subtag_bignum
156
157        define_node_subtag(ratio,1)
158max_rational_subtag = subtag_ratio
159
160        define_imm_subtag(single_float,1)
161        define_imm_subtag(double_float,2)
162min_float_subtag = subtag_single_float
163max_float_subtag = subtag_double_float
164max_real_subtag = subtag_double_float
165
166        define_node_subtag(complex,3)
167max_numeric_subtag = subtag_complex
168
169
170/* CL array types.  There are more immediate types than node types; all CL array subtags must be > than */
171/* all non-CL-array subtags.  So we start by defining the immediate subtags in decreasing order, starting */
172/* with that subtag whose element size isn]t an integral number of bits and ending with those whose */
173/* element size - like all non-CL-array fulltag-immheader types - is 32 bits. */
174
175        define_imm_subtag(bit_vector,31)
176        define_imm_subtag(double_float_vector,30)
177        define_imm_subtag(s16_vector,29)
178        define_imm_subtag(u16_vector,28)
179min_16_bit_ivector_subtag = subtag_u16_vector
180max_16_bit_ivector_subtag = subtag_s16_vector
181        define_imm_subtag(s8_vector,26)
182        define_imm_subtag(u8_vector,25)
183min_8_bit_ivector_subtag = subtag_u8_vector
184max_8_bit_ivector_subtag = fulltag_immheader|(27<<ntagbits)
185        define_imm_subtag(simple_base_string,24)
186        define_imm_subtag(fixnum_vector,23)
187        define_imm_subtag(s32_vector,22)
188        define_imm_subtag(u32_vector,21)
189        define_imm_subtag(single_float_vector,20)
190max_32_bit_ivector_subtag = fulltag_immheader|(24<<ntagbits)
191min_cl_ivector_subtag = subtag_single_float_vector
192
193
194        define_node_subtag(vectorH,20)
195        define_node_subtag(arrayH,19)
196        define_node_subtag(simple_vector,21)
197min_vector_subtag = subtag_vectorH
198min_array_subtag = subtag_arrayH
199
200/* So, we get the remaining subtags (n: (n > max-numeric-subtag) & (n < min-array-subtag)) */
201/* for various immediate/node object types. */
202
203        define_imm_subtag(macptr,3)
204min_non_numeric_imm_subtag = subtag_macptr
205
206        define_imm_subtag(dead_macptr,4)
207        define_imm_subtag(code_vector,5)
208        define_imm_subtag(creole,6)
209
210max_non_array_imm_subtag = (18<<ntagbits)|fulltag_immheader
211
212        define_node_subtag(catch_frame,4)
213        define_node_subtag(function,5)
214        define_node_subtag(basic_stream,6)
215        define_node_subtag(symbol,7)
216        define_node_subtag(lock,8)
217        define_node_subtag(hash_vector,9)
218        define_node_subtag(pool,10)
219        define_node_subtag(weak,11)
220        define_node_subtag(package,12)
221        define_node_subtag(slot_vector,13)
222        define_node_subtag(instance,14)
223        define_node_subtag(struct,15)
224        define_node_subtag(istruct,16)
225        define_node_subtag(value_cell,17)
226        define_node_subtag(xfunction,18)
227max_non_array_node_subtag = (18<<ntagbits)|fulltag_immheader
228       
229/* The objects themselves look something like this: */
230        _structf(ratio)
231         _node(numer)
232         _node(denom)
233        _endstructf
234
235        _structf(single_float)
236         _word(value)
237        _endstructf
238
239        _structf(double_float)
240         _word(pad)
241         _dword(value)
242        _endstructf
243
244        _structf(symbol)
245         _node(pname)
246         _node(vcell)
247         _node(fcell)
248         _node(package_predicate)
249         _node(flags)
250         _node(plist)
251         _node(binding_index)
252        _endstructf
253
254        _structf(catch_frame)
255         _node(catch_tag)       /* #<unbound> -> unwind-protect, else catch */
256         _node(link)            /* backpointer to previous catch frame */
257         _node(mvflag)          /* 0 if single-valued catch, fixnum 1 otherwise */
258         _node(csp)             /* pointer to lisp_frame on csp */
259         _node(db_link)         /* head of special-binding chain */
260         _field(regs,8*node_size)       /* save7-save0 */
261         _node(xframe)          /* exception frame chain */
262         _node(tsp_segment)     /* maybe someday; padding for now */
263        _endstructf
264
265        _structf(macptr)
266         _node(address)
267         _node(domain)
268         _node(type)
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       
289       
290        _struct(c_frame,0)      /* PowerOpen ABI C stack frame */
291         _node(backlink)
292         _node(crsave)
293         _node(savelr)
294         _field(unused, 8)
295         _node(savetoc)
296         _struct_label(params)
297         _node(param0)
298         _node(param1)
299         _node(param2)
300         _node(param3)
301         _node(param4)
302         _node(param5)
303         _node(param6)
304         _node(param7)
305         _struct_label(minsiz)
306        _ends
307
308
309        _struct(eabi_c_frame,0)
310         _word(backlink) 
311         _word(savelr)
312         _word(param0)
313         _word(param1)
314         _word(param2)
315         _word(param3)
316         _word(param4)
317         _word(param5)
318         _word(param6)
319         _word(param7)
320         _struct_label(minsiz)
321        _ends
322
323        /* For entry to variable-argument-list functions */
324/*        (e.g., via callback) */
325        _struct(varargs_eabi_c_frame,0)
326         _word(backlink)
327         _word(savelr)
328         _struct_label(va_list)
329         _word(flags)           /* gpr count byte, fpr count byte, padding */
330         _word(overflow_arg_area)
331         _word(reg_save_area)
332         _field(padding,4)
333         _struct_label(regsave)
334         _field(gp_save,8*node_size)
335         _field(fp_save,8*8)
336         _word(old_backlink)
337         _word(old_savelr)
338         _struct_label(incoming_stack_args)
339        _ends
340               
341        _struct(lisp_frame,0)
342         _node(backlink) 
343         _node(savefn) 
344         _node(savelr) 
345         _node(savevsp) 
346        _ends
347
348        _struct(vector,-fulltag_misc)
349         _node(header)
350         _struct_label(data)
351        _ends
352
353        _struct(binding,0)
354         _node(link)
355         _node(sym)
356         _node(val)
357        _ends
358
359
360
361symbol_extra = symbol.size-fulltag_misc
362       
363        _struct(nrs,nil_value-fulltag_nil)
364         _struct_pad(fulltag_nil)
365         _field(nilptr,16-fulltag_nil)
366
367         _struct_pad(fulltag_misc)
368         _struct_label(tsym)
369         _struct_pad(symbol_extra)      /* t */
370
371         _struct_pad(fulltag_misc)
372         _struct_label(nilsym)
373         _struct_pad(symbol_extra)      /* nil */
374
375         _struct_pad(fulltag_misc)
376         _struct_label(errdisp)
377         _struct_pad(symbol_extra)      /* %err-disp */
378
379         _struct_pad(fulltag_misc)
380         _struct_label(cmain)
381         _struct_pad(symbol_extra)      /* cmain */
382
383         _struct_pad(fulltag_misc)
384         _struct_label(eval)
385         _struct_pad(symbol_extra)      /* eval */
386 
387         _struct_pad(fulltag_misc)
388         _struct_label(appevalfn)
389         _struct_pad(symbol_extra)      /* apply-evaluated-function */
390
391         _struct_pad(fulltag_misc)
392         _struct_label(error)
393         _struct_pad(symbol_extra)      /* error */
394
395         _struct_pad(fulltag_misc)
396         _struct_label(defun)
397         _struct_pad(symbol_extra)      /* %defun */
398
399         _struct_pad(fulltag_misc)
400         _struct_label(defvar)
401         _struct_pad(symbol_extra)      /* %defvar */
402
403         _struct_pad(fulltag_misc)
404         _struct_label(defconstant)
405         _struct_pad(symbol_extra)      /* %defconstant */
406
407         _struct_pad(fulltag_misc)
408         _struct_label(macrosym)
409         _struct_pad(symbol_extra)      /* %macro */
410
411         _struct_pad(fulltag_misc)
412         _struct_label(kernelrestart)
413         _struct_pad(symbol_extra)      /* %kernel-restart */
414
415         _struct_pad(fulltag_misc)
416         _struct_label(package)
417         _struct_pad(symbol_extra)      /* *package* */
418
419         _struct_pad(fulltag_misc)
420         _struct_label(total_bytes_freed)               /* *total-bytes-freed* */
421         _struct_pad(symbol_extra)
422
423         _struct_pad(fulltag_misc)
424         _struct_label(kallowotherkeys)
425         _struct_pad(symbol_extra)      /* allow-other-keys */
426
427         _struct_pad(fulltag_misc)
428         _struct_label(toplcatch)
429         _struct_pad(symbol_extra)      /* %toplevel-catch% */
430
431         _struct_pad(fulltag_misc)
432         _struct_label(toplfunc)
433         _struct_pad(symbol_extra)      /* %toplevel-function% */
434
435         _struct_pad(fulltag_misc)
436         _struct_label(callbacks)
437         _struct_pad(symbol_extra)      /* %pascal-functions% */
438
439         _struct_pad(fulltag_misc)
440         _struct_label(allmeteredfuns)
441         _struct_pad(symbol_extra)      /* *all-metered-functions* */
442
443         _struct_pad(fulltag_misc)
444         _struct_label(total_gc_microseconds)           /* *total-gc-microseconds* */
445         _struct_pad(symbol_extra)
446
447         _struct_pad(fulltag_misc)
448         _struct_label(builtin_functions)               /* %builtin-functions% */
449         _struct_pad(symbol_extra)               
450
451         _struct_pad(fulltag_misc)
452         _struct_label(udf)
453         _struct_pad(symbol_extra)      /* %unbound-function% */
454
455         _struct_pad(fulltag_misc)
456         _struct_label(init_misc)
457         _struct_pad(symbol_extra)      /* %init-misc */
458
459         _struct_pad(fulltag_misc)
460         _struct_label(macro_code)
461         _struct_pad(symbol_extra)      /* %macro-code% */
462
463         _struct_pad(fulltag_misc)
464         _struct_label(closure_code)
465         _struct_pad(symbol_extra)      /* %closure-code% */
466
467         _struct_pad(fulltag_misc)
468         _struct_label(new_gcable_ptr) /* %new-gcable-ptr */
469         _struct_pad(symbol_extra)
470       
471         _struct_pad(fulltag_misc)
472         _struct_label(gc_event_status_bits)
473         _struct_pad(symbol_extra)      /* *gc-event-status-bits* */
474
475         _struct_pad(fulltag_misc)
476         _struct_label(post_gc_hook)
477         _struct_pad(symbol_extra)      /* *post-gc-hook* */
478
479         _struct_pad(fulltag_misc)
480         _struct_label(handlers)
481         _struct_pad(symbol_extra)      /* %handlers% */
482
483
484         _struct_pad(fulltag_misc)
485         _struct_label(all_packages)
486         _struct_pad(symbol_extra)      /* %all-packages% */
487
488         _struct_pad(fulltag_misc)
489         _struct_label(keyword_package)
490         _struct_pad(symbol_extra)      /* *keyword-package* */
491
492         _struct_pad(fulltag_misc)
493         _struct_label(finalization_alist)
494         _struct_pad(symbol_extra)      /* %finalization-alist% */
495
496         _struct_pad(fulltag_misc)
497         _struct_label(foreign_thread_control)
498         _struct_pad(symbol_extra)      /* %foreign-thread-control */
499
500        _ends
501
502define([def_header],[
503$1 = ($2<<num_subtag_bits)|$3])
504
505        def_header(single_float_header,single_float.element_count,subtag_single_float)
506        def_header(double_float_header,double_float.element_count,subtag_double_float)
507        def_header(one_digit_bignum_header,1,subtag_bignum)
508        def_header(two_digit_bignum_header,2,subtag_bignum)
509        def_header(three_digit_bignum_header,3,subtag_bignum)
510        def_header(symbol_header,symbol.element_count,subtag_symbol)
511        def_header(value_cell_header,1,subtag_value_cell        )
512        def_header(macptr_header,macptr.element_count,subtag_macptr)
513        def_header(vectorH_header,vectorH.element_count,subtag_vectorH)
514
515        include(errors.s)
516
517/* Symbol bits that we care about */
518sym_vbit_bound = (0+fixnum_shift)
519sym_vbit_bound_mask = (1<<sym_vbit_bound)
520sym_vbit_const = (1+fixnum_shift)
521sym_vbit_const_mask = (1<<sym_vbit_const)
522
523        _struct(area,0)
524         _node(pred) 
525         _node(succ) 
526         _node(low) 
527         _node(high) 
528         _node(active) 
529         _node(softlimit) 
530         _node(hardlimit) 
531         _node(code) 
532         _node(markbits) 
533         _node(ndwords) 
534         _node(older) 
535         _node(younger) 
536         _node(h) 
537         _node(sofprot) 
538         _node(hardprot) 
539         _node(owner) 
540         _node(refbits) 
541         _node(nextref) 
542        _ends
543
544
545/* This is only referenced by c->lisp code that needs to save/restore C NVRs in a TSP frame. */
546        _struct(c_reg_save,0)
547         _node(tsp_link)        /* backpointer */
548         _node(tsp_mark)        /* frame type */
549         _node(save_fpscr)      /* for Cs FPSCR */
550         _field(save_gprs,19*4) /* r13-r31 */
551         _dword(save_fp_zero)   /* for fp_zero */
552         _dword(save_fps32conv)
553        _ends
554
555
556TCR_BIAS = 0
557/* TCR_BIAS = 0x7000 */
558       
559/*  Thread context record. */
560
561        _struct(tcr,-TCR_BIAS)
562         _node(prev)            /* in doubly-linked list */
563         _node(next)            /* in doubly-linked list */
564         _node(lisp_fpscr)      /* lisp thread's fpscr (in low word) */
565         _node(lisp_fpscr_low)
566         _node(db_link)         /* special binding chain head */
567         _node(catch_top)       /* top catch frame */
568         _node(save_vsp)        /* VSP when in foreign code */
569         _node(save_tsp)        /* TSP when in foreign code */
570         _node(cs_area)         /* cstack area pointer */
571         _node(vs_area)         /* vstack area pointer */
572         _node(ts_area)         /* tstack area pointer */
573         _node(cs_limit)        /* cstack overflow limit */
574         _node(bytes_consed_high)
575         _node(bytes_consed_low)
576         _node(log2_allocation_quantum)
577         _node(interrupt_pending)
578         _node(xframe)          /* per-thread exception frame list */
579         _node(errno_loc)       /* per-thread  errno location */
580         _node(ffi_exception)   /* fpscr exception bits from ff-call */
581         _node(osid)            /* OS thread id */
582         _node(valence)         /* odd when in foreign code */
583         _node(foreign_exception_status)
584         _node(native_thread_info)
585         _node(native_thread_id)
586         _node(last_allocptr)
587         _node(save_allocptr)
588         _node(save_allocbase)
589         _node(reset_completion)
590         _node(activate)
591         _node(suspend_count)
592         _node(suspend_context)
593         _node(pending_exception_context)
594         _node(suspend)         /* semaphore for suspension notify */
595         _node(resume)          /* sempahore for resumption notify */
596         _node(flags)     
597         _node(gc_context)
598         _node(termination_semaphore)
599         _node(unwinding)
600         _node(tlb_limit)
601         _node(tlb_pointer)     /* Consider using tcr+N as tlb_pointer */
602         _node(shutdown_count)
603         _node(safe_ref_address)
604        _ends
605
606TCR_FLAG_BIT_FOREIGN = fixnum_shift
607TCR_FLAG_BIT_AWAITING_PRESET = (fixnum_shift+1)
608       
609r0 = 0
610r1 = 1
611r2 = 2
612r3 = 3
613r4 = 4
614r5 = 5
615r6 = 6
616r7 = 7
617r8 = 8
618r9 = 9
619r10 = 10
620r11 = 11
621r12 = 12
622r13 = 13
623r14 = 14
624r15 = 15
625r16 = 16
626r17 = 17
627r18 = 18
628r19 = 19
629r20 = 20
630r21 = 21
631r22 = 22
632r23 = 23
633r24 = 24
634r25 = 25
635r26 = 26
636r27 = 27
637r28 = 28
638r29 = 29
639r30 = 30
640r31 = 31
641
642/* Lisp code keeps 0.0 in fp_zero */
643define([fp_zero],[f31])   /* a non-volatile reg as far as FFI is concerned. */
644define([fp_s32conv],[f30])   /* for s32->fp conversion */
645       
646/* registers, as used in destrucuring-bind/macro-bind */
647
648define([whole_reg],[temp1])
649define([arg_reg],[temp3])
650define([keyvect_reg],[temp2])
651define([mask_req_start],[24])
652define([mask_req_width],[8])
653define([mask_opt_start],[16])
654define([mask_opt_width],[8])
655define([mask_key_start],[8])
656define([mask_key_width],[8])
657define([mask_initopt],[7])
658define([mask_keyp],[6]) /*  note that keyp can be true even when 0 keys. */
659define([mask_aok],[5])
660define([mask_restp],[4])
661
662ifdef([DARWIN],[
663        define([STACK_ALIGN],16)
664        define([STACK_ALIGN_MASK],15)
665],[
666        define([STACK_ALIGN],8)
667        define([STACK_ALIGN_MASK],7)
668])
669
670define([TCR_STATE_FOREIGN],1)
671define([TCR_STATE_LISP],0)
672define([TCR_STATE_EXCEPTION_WAIT],2)
673define([TCR_STATE_EXCEPTION_RETURN],4)
674
675define([RESERVATION_DISCHARGE],0x2004)
676
677lisp_globals_limit = 0x3010
678       
679INTERRUPT_LEVEL_BINDING_INDEX = fixnumone
Note: See TracBrowser for help on using the repository browser.