source: release/1.9/source/lisp-kernel/lisp_globals.s

Last change on this file was 15425, checked in by gb, 7 years ago

armcl. armcl.image: new binaries
compiler/ARM/arm-arch.lisp: add tcr.architecture-version. Bump fasl version,

image version.

compiler/ARM/arm-asm.lisp: don't define ARMv7-specific instructions.
compiler/ARM/arm-lap.lisp: new :opcode directive, assembles arbitrary word

in code section.

compiler/ARM/arm-lapmacros.lisp: don't use v7-specific instructions. Define

clrex, dmb as macros which test architecture version at runtime. Remove
some unused things.

compiler/ARM/arm-vinsns.lisp: don't use v7-specific instructions. Remove

some more unused things.

compiler/ARM/arm2.lisp: Remove still more unused things.
level-0/ARM/arm-bignum.lisp: don't use v7-specific instructions.
level-0/l0-cfm-support.lisp: hack to try to avoid treating dynamic linker

as a shared library on Linux. (Different dynamic linkers are used for
softfp/hard float on ARM; we don't a saved image to try to re-open the
wrong one.

level-1/arm-callback-support.lisp: don't use movw instruction in callback

trampolines.

lisp-kernel/arm-asmutils.s: don't use v7-specific instructions (unless we're

sure that we're on v7 or later.)

lisp-kernel/arm-constants.h: tcr.architecture_version. Bump image version.

Define ARM CPU architecture constants.

lisp-kernel/arm-constants.s: tcr.architecture_version.
lisp-kernel/arm-macros.s: define _clrex and _dmb macros which test

tcr.arm_architecture_version at runtime.

lisp-kernel/arm-spentry.s: use _clrex macro. In _SPcheck_fpu_exception,

look for offending instuction 4 bytes further before lr (change in
subprim call mechanism.)

lisp-kernel/linuxarm/Makefile: compile/assemble for ARMv6.
lisp-kernel/lisp_globals.s: don't need to define NUM_LISP_GLOBALS anymore.
lisp-kernel/pmcl-kernel.c: check_arm_cpu() accepts ARMv6 or later.
lisp-kernel/thread-manager.c: when creating a TCR on ARM, set

tcr.architecture_version to fixnum representation of architecture - 7 (so
ARMv6 is -1, ARMv7 is 0, etc.)

File size: 8.2 KB
Line 
1/*   Copyright (C) 2009 Clozure Associates */
2/*   Copyright (C) 1994-2001 Digitool, Inc */
3/*   This file is part of Clozure CL. */
4
5/*   Clozure CL is licensed under the terms of the Lisp Lesser GNU Public */
6/*   License , known as the LLGPL and distributed with Clozure CL as the */
7/*   file "LICENSE".  The LLGPL consists of a preamble and the LGPL, */
8/*   which is distributed with Clozure CL as the file "LGPL".  Where these */
9/*   conflict, the preamble takes precedence. */
10
11/*   Clozure CL 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/* This file should be included in a platform-specific *constants*.s file,
17   which should define nrs_origin and nrs_symbol_fulltag before doing so.
18*/
19nrs_symbol_extra = symbol.size-nrs_symbol_fulltag
20       
21        _struct(nrs,nrs_origin)
22         _struct_pad(nrs_symbol_fulltag)
23         _struct_label(tsym)
24         _struct_pad(nrs_symbol_extra)  /* t */
25
26         _struct_pad(nrs_symbol_fulltag)
27         _struct_label(nilsym)
28         _struct_pad(nrs_symbol_extra)  /* nil */
29
30         _struct_pad(nrs_symbol_fulltag)
31         _struct_label(errdisp)
32         _struct_pad(nrs_symbol_extra)  /* %err-disp */
33
34         _struct_pad(nrs_symbol_fulltag)
35         _struct_label(cmain)
36         _struct_pad(nrs_symbol_extra)  /* cmain */
37
38         _struct_pad(nrs_symbol_fulltag)
39         _struct_label(eval)
40         _struct_pad(nrs_symbol_extra)  /* eval */
41 
42         _struct_pad(nrs_symbol_fulltag)
43         _struct_label(appevalfn)
44         _struct_pad(nrs_symbol_extra)  /* apply-evaluated-function */
45
46         _struct_pad(nrs_symbol_fulltag)
47         _struct_label(error)
48         _struct_pad(nrs_symbol_extra)  /* error */
49
50         _struct_pad(nrs_symbol_fulltag)
51         _struct_label(defun)
52         _struct_pad(nrs_symbol_extra)  /* %defun */
53
54         _struct_pad(nrs_symbol_fulltag)
55         _struct_label(defvar)
56         _struct_pad(nrs_symbol_extra)  /* %defvar */
57
58         _struct_pad(nrs_symbol_fulltag)
59         _struct_label(defconstant)
60         _struct_pad(nrs_symbol_extra)  /* %defconstant */
61
62         _struct_pad(nrs_symbol_fulltag)
63         _struct_label(macrosym)
64         _struct_pad(nrs_symbol_extra)  /* %macro */
65
66         _struct_pad(nrs_symbol_fulltag)
67         _struct_label(kernelrestart)
68         _struct_pad(nrs_symbol_extra)  /* %kernel-restart */
69
70         _struct_pad(nrs_symbol_fulltag)
71         _struct_label(package)
72         _struct_pad(nrs_symbol_extra)  /* *package* */
73
74         _struct_pad(nrs_symbol_fulltag)
75         _struct_label(total_bytes_freed)               /* *total-bytes-freed* */
76         _struct_pad(nrs_symbol_extra)
77
78         _struct_pad(nrs_symbol_fulltag)
79         _struct_label(kallowotherkeys)
80         _struct_pad(nrs_symbol_extra)  /* allow-other-keys */
81
82         _struct_pad(nrs_symbol_fulltag)
83         _struct_label(toplcatch)
84         _struct_pad(nrs_symbol_extra)  /* %toplevel-catch% */
85
86         _struct_pad(nrs_symbol_fulltag)
87         _struct_label(toplfunc)
88         _struct_pad(nrs_symbol_extra)  /* %toplevel-function% */
89
90         _struct_pad(nrs_symbol_fulltag)
91         _struct_label(callbacks)
92         _struct_pad(nrs_symbol_extra)  /* %pascal-functions% */
93
94         _struct_pad(nrs_symbol_fulltag)
95         _struct_label(restore_lisp_pointers)
96         _struct_pad(nrs_symbol_extra)  /* restore-lisp-pointers */
97
98         _struct_pad(nrs_symbol_fulltag)
99         _struct_label(total_gc_microseconds)           /* *total-gc-microseconds* */
100         _struct_pad(nrs_symbol_extra)
101
102         _struct_pad(nrs_symbol_fulltag)
103         _struct_label(builtin_functions)               /* %builtin-functions% */
104         _struct_pad(nrs_symbol_extra)               
105
106         _struct_pad(nrs_symbol_fulltag)
107         _struct_label(udf)
108         _struct_pad(nrs_symbol_extra)  /* %unbound-function% */
109
110         _struct_pad(nrs_symbol_fulltag)
111         _struct_label(init_misc)
112         _struct_pad(nrs_symbol_extra)  /* %init-misc */
113
114         _struct_pad(nrs_symbol_fulltag)
115         _struct_label(macro_code)
116         _struct_pad(nrs_symbol_extra)  /* %macro-code% */
117
118         _struct_pad(nrs_symbol_fulltag)
119         _struct_label(closure_code)
120         _struct_pad(nrs_symbol_extra)      /* %closure-code% */
121
122         _struct_pad(nrs_symbol_fulltag)
123         _struct_label(new_gcable_ptr) /* %new-gcable-ptr */
124         _struct_pad(nrs_symbol_extra)
125       
126         _struct_pad(nrs_symbol_fulltag)
127         _struct_label(gc_event_status_bits)
128         _struct_pad(nrs_symbol_extra)  /* *gc-event-status-bits* */
129
130         _struct_pad(nrs_symbol_fulltag)
131         _struct_label(post_gc_hook)
132         _struct_pad(nrs_symbol_extra)  /* *post-gc-hook* */
133
134         _struct_pad(nrs_symbol_fulltag)
135         _struct_label(handlers)
136         _struct_pad(nrs_symbol_extra)  /* %handlers% */
137
138
139         _struct_pad(nrs_symbol_fulltag)
140         _struct_label(all_packages)
141         _struct_pad(nrs_symbol_extra)  /* %all-packages% */
142
143         _struct_pad(nrs_symbol_fulltag)
144         _struct_label(keyword_package)
145         _struct_pad(nrs_symbol_extra)  /* *keyword-package* */
146
147         _struct_pad(nrs_symbol_fulltag)
148         _struct_label(os_init_function)
149         _struct_pad(nrs_symbol_extra)  /* %os-init-function% */
150
151         _struct_pad(nrs_symbol_fulltag)
152         _struct_label(foreign_thread_control)
153         _struct_pad(nrs_symbol_extra)  /* %foreign-thread-control */
154        _ends
155
156
157       
158        _struct(lisp_globals,lisp_globals_limit)
159         _rnode(get_tcr)                /* address of get_tcr() for callbacks */
160         _rnode(tcr_count)              /* next tcr's tcr_id */
161         _rnode(interrupt_signal)  /* signal to use for PROCESS-INTERRUPT */
162         _rnode(kernel_imports) /* some things we need to have imported for us. */
163         _rnode(objc_2_personality) /* A good listener.  Doesn't say much */
164         _rnode(savetoc)        /* Saved TOC register, for some platforms */
165         _rnode(saver13)        /* Saved (global) r13, on some platforms */
166         _rnode(subprims_base)  /* where the dynamic subprims wound up */
167         _rnode(ret1valn)               /* magic multiple-values return address */
168         _rnode(tcr_key)        /* tsd key for per-thread tcr */
169         _rnode(tcr_area_lock)       /* all_areas/tcr queue lock */
170         _rnode(exception_lock) /* serialize exception handling */
171         _rnode(static_conses)
172         _rnode(default_allocation_quantum)
173         _rnode(intflag)
174         _rnode(gc_inhibit_count)
175         _rnode(refbits)
176         _rnode(oldspace_dnode_count) /* count of dynamic dnodes older than generation 0 */
177         __ifdef(`PPC')
178          _rnode(altivec_present)   /* non-zero if AltiVec present. */
179         __else
180          _rnode(float_abi)         /* non zero when hard-float ABI in effect */
181         __endif
182         _rnode(fwdnum)            /* fixnum: GC "forwarder" call count. */
183         _rnode(gc_num)            /* fixnum: GC call count. */
184         _rnode(gcable_pointers)   /* linked-list of weak macptrs. */
185         _rnode(heap_start)        /* start of lisp heap */
186         _rnode(heap_end)          /* end of lisp heap */
187         _rnode(statically_linked)        /* non-zero if -static */
188         _rnode(stack_size)        /* from the command line */
189         _rnode(objc_2_begin_catch)  /* address of ObjC 2.0 objc_begin_catch() */
190         _rnode(kernel_path)       /* real executable name */
191         _rnode(all_areas)         /* doubly-linked list of stack & heap areas */
192         _rnode(lexpr_return)      /* magic &lexpr cleanup code */
193         _rnode(lexpr_return1v)    /* single-value &lexpr cleanup code */
194         _rnode(in_gc)             /* non-zero when lisp addresses may be invalid */
195         _rnode(free_static_conses)     /* length of freelist */
196         _rnode(objc_2_end_catch)          /* address of ObjC 2.0 objc_end_catch() */
197         _rnode(short_float_zero)  /* low half of 1.0d0 */
198         _rnode(double_float_one)  /* high half of 1.0d0 */
199         _rnode(static_cons_area)       /* static_cons_area */
200         _rnode(lisp_exit_hook) /* install foreign exception handling */
201         _rnode(oldest_ephemeral)  /* doubleword address of oldest ephemeral object or 0 */
202         _rnode(tenured_area)      /* the tenured area */
203         _rnode(ref_base)          /* start of oldest pointer-bearing area */
204         _rnode(argv)              /* pointer to &argv[0] */
205         _rnode(host_platform)  /* for platform-specific initialization */
206         _rnode(batch_flag)     /* -b arg */
207         _rnode(unwind_resume)  /* address of _Unwind_Resume from libobjc */
208         _rnode(weak_gc_method) /* weak GC algorithm */
209         _rnode(image_name)     /* --image-name arg */
210         _rnode(initial_tcr)    /* initial thread tcr */
211         _rnode(weakvll)           /* all populations as of last GC */
212         _rnode(managed_static_refbits) /* refs from managed_static to dynamic */
213         _rnode(managed_static_dnodes) /* ndnodes in managed_static_area */
214        _ends
215
216/* Traditional name, differs from C */
217        .set lisp_globals.ret1val_addr,lisp_globals.ret1valn
218       
Note: See TracBrowser for help on using the repository browser.