1 | ;;;-*- Mode: Lisp; Package: (PPC :use CL) -*- |
---|
2 | ;;; |
---|
3 | ;;; Copyright (C) 1994-2001 Digitool, Inc |
---|
4 | ;;; This file is part of OpenMCL. |
---|
5 | ;;; |
---|
6 | ;;; OpenMCL is licensed under the terms of the Lisp Lesser GNU Public |
---|
7 | ;;; License , known as the LLGPL and distributed with OpenMCL as the |
---|
8 | ;;; file "LICENSE". The LLGPL consists of a preamble and the LGPL, |
---|
9 | ;;; which is distributed with OpenMCL as the file "LGPL". Where these |
---|
10 | ;;; conflict, the preamble takes precedence. |
---|
11 | ;;; |
---|
12 | ;;; OpenMCL is referenced in the preamble as the "LIBRARY." |
---|
13 | ;;; |
---|
14 | ;;; The LLGPL is also available online at |
---|
15 | ;;; http://opensource.franz.com/preamble.html |
---|
16 | |
---|
17 | (defpackage "PPC" |
---|
18 | (:use "CL")) |
---|
19 | |
---|
20 | (require "ARCH") |
---|
21 | |
---|
22 | (in-package "PPC") |
---|
23 | ;;; Lisp registers. |
---|
24 | (eval-when (:compile-toplevel :execute) |
---|
25 | (defmacro defregs (&body regs) |
---|
26 | `(progn |
---|
27 | (ccl::defenum () ,@regs) |
---|
28 | (defparameter *gpr-register-names* ,(coerce (mapcar #'string regs) 'vector)))) |
---|
29 | (defmacro deffpregs (&body regs) |
---|
30 | `(progn |
---|
31 | (ccl::defenum () ,@regs) |
---|
32 | (defparameter *fpr-register-names* ,(coerce (mapcar #'string regs) 'vector)))) |
---|
33 | (defmacro defvregs (&body regs) |
---|
34 | `(progn |
---|
35 | (ccl::defenum () ,@regs) |
---|
36 | (defparameter *vector-register-names* ,(coerce (mapcar #'string regs) 'vector)) |
---|
37 | ))) |
---|
38 | |
---|
39 | (defregs |
---|
40 | rzero ; Always contains 0; not as handy as it sounds. |
---|
41 | sp ; The control stack. Aligned on 16-byte boundary. |
---|
42 | target-1 ; volatile reg on Darwin, tp or TOC on Linux. |
---|
43 | imm0 ; Unboxed, volatile registers. |
---|
44 | imm1 |
---|
45 | imm2 |
---|
46 | imm3 |
---|
47 | imm4 |
---|
48 | imm5 |
---|
49 | allocptr |
---|
50 | allocbase |
---|
51 | nargs ; Volatile. SHOULDN'T be used for tag extraction. (TWI handler confusion.) |
---|
52 | tsp ; Temp-stack pointer. |
---|
53 | target-2 |
---|
54 | loc-pc ; for return PC only. |
---|
55 | vsp ; Value stack pointer; grows towards 0. |
---|
56 | fn ; Current function (constants vector). |
---|
57 | temp3 ; Boxed, volatile registers. Some |
---|
58 | ; may be defined on function entry. |
---|
59 | temp2 |
---|
60 | temp1 |
---|
61 | temp0 |
---|
62 | arg_x ; Next-to-next-to-last function arg. |
---|
63 | arg_y ; Next-to-last function argument. |
---|
64 | arg_z ; Last function argument. |
---|
65 | save7 ; Boxed, nonvolatile registers. |
---|
66 | save6 |
---|
67 | save5 |
---|
68 | save4 |
---|
69 | save3 |
---|
70 | save2 |
---|
71 | save1 |
---|
72 | save0 |
---|
73 | ) |
---|
74 | |
---|
75 | (deffpregs |
---|
76 | fp0 |
---|
77 | fp1 |
---|
78 | fp2 |
---|
79 | fp3 |
---|
80 | fp4 |
---|
81 | fp5 |
---|
82 | fp6 |
---|
83 | fp7 |
---|
84 | fp8 |
---|
85 | fp9 |
---|
86 | fp10 |
---|
87 | fp11 |
---|
88 | fp12 |
---|
89 | fp13 |
---|
90 | fp14 |
---|
91 | fp15 |
---|
92 | fp16 |
---|
93 | fp17 |
---|
94 | fp18 |
---|
95 | fp19 |
---|
96 | fp20 |
---|
97 | fp21 |
---|
98 | fp22 |
---|
99 | fp23 |
---|
100 | fp24 |
---|
101 | fp25 |
---|
102 | fp26 |
---|
103 | fp27 |
---|
104 | fp28 |
---|
105 | fp29 |
---|
106 | fp30 |
---|
107 | fp31) |
---|
108 | |
---|
109 | (defvregs |
---|
110 | vr0 ; General temp vector register |
---|
111 | vr1 ; Most-significant quadword when word-aligning |
---|
112 | vr2 ; Least-significant quadword when word-aligning |
---|
113 | vr3 ; Operand A resulting from word-aligning |
---|
114 | vr4 ; Operand B resulting from word-aligning |
---|
115 | vr5 ; Result from operations on A and B |
---|
116 | vr6 |
---|
117 | vr7 |
---|
118 | vr8 |
---|
119 | vr9 |
---|
120 | vr10 |
---|
121 | vr11 |
---|
122 | vr12 |
---|
123 | vr13 |
---|
124 | vr14 |
---|
125 | vr15 |
---|
126 | vr16 |
---|
127 | vr17 |
---|
128 | vr18 |
---|
129 | vr19 |
---|
130 | ;;By convention, registers after this point are considered non-volatile. Callee should save. |
---|
131 | vr20 |
---|
132 | vr21 |
---|
133 | vr22 |
---|
134 | vr23 |
---|
135 | vr24 |
---|
136 | vr25 |
---|
137 | vr26 |
---|
138 | vr27 ; Permutation control register A for loads |
---|
139 | vr28 ; Permutation control register B for stores |
---|
140 | vr29 ; mask register |
---|
141 | vr30 ; All zeros |
---|
142 | vr31 ; All ones |
---|
143 | ) |
---|
144 | |
---|
145 | |
---|
146 | |
---|
147 | ;;; Calling sequence may pass additional arguments in temp registers. |
---|
148 | ;;; "nfn" (new function) is always passed; it's the new value of "fn". |
---|
149 | (defconstant nfn temp2) |
---|
150 | |
---|
151 | ;;; CLOS may pass the context for, e.g.., CALL-NEXT-METHOD in |
---|
152 | ;;;; the "next-method-context" register. |
---|
153 | (defconstant next-method-context temp1) |
---|
154 | |
---|
155 | |
---|
156 | ;;; It's handy to have 0.0 in an fpr. |
---|
157 | (defconstant fp-zero fp31) |
---|
158 | |
---|
159 | ; Also handy to have #x4330000080000000 in an fpr, for s32->float conversion. |
---|
160 | (defconstant fp-s32conv fp30) |
---|
161 | |
---|
162 | (defconstant fname temp3) |
---|
163 | |
---|
164 | ;;; Calling sequence may pass additional arguments in temp registers. |
---|
165 | ;;; "nfn" (new function) is always passed; it's the new value of "fn". |
---|
166 | (defconstant nfn temp2) |
---|
167 | |
---|
168 | ;;; CLOS may pass the context for, e.g.., CALL-NEXT-METHOD in |
---|
169 | ;;;; the "next-method-context" register. |
---|
170 | (defconstant next-method-context temp1) |
---|
171 | |
---|
172 | |
---|
173 | ;;; It's handy to have 0.0 in an fpr. |
---|
174 | (defconstant fp-zero fp31) |
---|
175 | |
---|
176 | ; Also handy to have #x4330000080000000 in an fpr, for s32->float conversion. |
---|
177 | (defconstant fp-s32conv fp30) |
---|
178 | |
---|
179 | (ccl::defenum (:prefix "FPSCR-" :suffix "-BIT") |
---|
180 | fx |
---|
181 | fex |
---|
182 | vx |
---|
183 | ox |
---|
184 | ux |
---|
185 | zx |
---|
186 | xx |
---|
187 | vxsnan |
---|
188 | vxisi |
---|
189 | vxidi |
---|
190 | vxzdz |
---|
191 | vximz |
---|
192 | vxvc |
---|
193 | fr |
---|
194 | fi |
---|
195 | fprfc |
---|
196 | fl |
---|
197 | fg |
---|
198 | fe |
---|
199 | fu |
---|
200 | nil |
---|
201 | vxsoft |
---|
202 | vxsqrt |
---|
203 | vxcvi |
---|
204 | ve |
---|
205 | oe |
---|
206 | ue |
---|
207 | ze |
---|
208 | xe |
---|
209 | ni |
---|
210 | rn0 |
---|
211 | rn1 |
---|
212 | ) |
---|
213 | |
---|
214 | (ccl::defenum (:prefix "PPC-" :suffix "-BIT") |
---|
215 | lt |
---|
216 | gt |
---|
217 | eq |
---|
218 | so |
---|
219 | ) |
---|
220 | |
---|
221 | ;;; Kernel globals are allocated "below" nil. This list (used to map |
---|
222 | ;;; symbolic names to rnil-relative offsets) must (of course) exactly |
---|
223 | ;;; match the kernel's notion of where things are. |
---|
224 | ;;; The order here matches "ccl:lisp-kernel;lisp_globals.h" & the |
---|
225 | ;;; lisp_globals record in "ccl:lisp-kernel;*constants*.s" |
---|
226 | (defparameter *ppc-kernel-globals* |
---|
227 | '(get-tcr ; callback to obtain (real) tcr |
---|
228 | tcr-count |
---|
229 | interrupt-signal ; used by PROCESS-INTERRUPT |
---|
230 | kernel-imports ; some things we need to have imported for us. |
---|
231 | objc-2-personality |
---|
232 | emulator-registers ; Where the 68K registers are kept. |
---|
233 | appmain ; application's (c-runtime) main() function |
---|
234 | subprims-base ; start of dynamic subprims jump table |
---|
235 | ret1valaddr ; magic multiple-values return address. |
---|
236 | tcr-key ; tsd key for thread's tcr |
---|
237 | area-lock ; serialize access to gc |
---|
238 | exception-lock ; serialize exception handling |
---|
239 | static-conses ; when FREEZE is in effect |
---|
240 | default-allocation-quantum ; log2_heap_segment_size, as a fixnum. |
---|
241 | intflag ; interrupt-pending flag |
---|
242 | gc-inhibit-count ; for gc locking |
---|
243 | refbits ; oldspace refbits |
---|
244 | oldspace-dnode-count ; number of dnodes in dynamic space that are older than |
---|
245 | ; youngest generation |
---|
246 | altivec-present ; non-zero if cpu supports AltiVec |
---|
247 | fwdnum ; fixnum: GC "forwarder" call count. |
---|
248 | gc-count ; fixnum: GC call count. |
---|
249 | gcable-pointers ; linked-list of weak macptrs. |
---|
250 | heap-start ; start of lisp heap |
---|
251 | heap-end ; end of lisp heap |
---|
252 | statically-linked ; true if the lisp kernel is statically linked |
---|
253 | stack-size ; weak gc policy/algorithm |
---|
254 | objc-2-begin-catch ; objc_begin_catch |
---|
255 | kernel-path |
---|
256 | all-areas ; doubly-linked area list |
---|
257 | lexpr-return ; multiple-value lexpr return address |
---|
258 | lexpr-return1v ; single-value lexpr return address |
---|
259 | in-gc ; non-zero when GC-ish thing active |
---|
260 | metering-info ; kernel metering structure |
---|
261 | objc-2-end-catch ; _objc_end_catch |
---|
262 | short-float-zero ; low half of 1.0d0 |
---|
263 | double-float-one ; high half of 1.0d0 |
---|
264 | ffi-exception ; ffi fpscr[fex] bit |
---|
265 | exception-saved-registers ; saved registers from exception frame |
---|
266 | oldest-ephemeral ; doublenode address of oldest ephemeral object or 0 |
---|
267 | tenured-area ; the tenured_area. |
---|
268 | errno ; address of C lib errno |
---|
269 | argv ; address of C lib argv |
---|
270 | host-platform ; 0 on MacOS, 1 on PPC Linux, 2 on VxWorks ... |
---|
271 | batch-flag ; non-zero if --batch specified |
---|
272 | unwind-resume ; _Unwind_Resume |
---|
273 | weak-gc-method ; for gc |
---|
274 | image-name ; current image name |
---|
275 | initial-tcr ; initial thread's context record |
---|
276 | )) |
---|
277 | |
---|
278 | ;;; The order here matches "ccl:lisp-kernel;lisp_globals.h" and the nrs record |
---|
279 | ;;; in "ccl:lisp-kernel;constants.s". |
---|
280 | (defparameter *ppc-nil-relative-symbols* |
---|
281 | '(t |
---|
282 | nil |
---|
283 | ccl::%err-disp |
---|
284 | ccl::cmain |
---|
285 | eval |
---|
286 | ccl::apply-evaluated-function |
---|
287 | error |
---|
288 | ccl::%defun |
---|
289 | ccl::%defvar |
---|
290 | ccl::%defconstant |
---|
291 | ccl::%macro |
---|
292 | ccl::%kernel-restart |
---|
293 | *package* |
---|
294 | ccl::*total-bytes-freed* |
---|
295 | :allow-other-keys |
---|
296 | ccl::%toplevel-catch% |
---|
297 | ccl::%toplevel-function% |
---|
298 | ccl::%pascal-functions% |
---|
299 | ccl::*all-metered-functions* |
---|
300 | ccl::*total-gc-microseconds* |
---|
301 | ccl::%builtin-functions% |
---|
302 | ccl::%unbound-function% |
---|
303 | ccl::%init-misc |
---|
304 | ccl::%macro-code% |
---|
305 | ccl::%closure-code% |
---|
306 | ccl::%new-gcable-ptr |
---|
307 | ccl::*gc-event-status-bits* |
---|
308 | ccl::*post-gc-hook* |
---|
309 | ccl::%handlers% |
---|
310 | ccl::%all-packages% |
---|
311 | ccl::*keyword-package* |
---|
312 | ccl::%finalization-alist% |
---|
313 | ccl::%foreign-thread-control |
---|
314 | )) |
---|
315 | |
---|
316 | ;;; Old (and slightly confusing) name; NIL used to be in a register. |
---|
317 | (defparameter *ppc-nilreg-relative-symbols* *ppc-nil-relative-symbols*) |
---|
318 | |
---|
319 | |
---|
320 | |
---|
321 | |
---|
322 | |
---|
323 | (eval-when (:compile-toplevel :load-toplevel :execute) |
---|
324 | (defparameter *ppc-subprims-shift* 2) |
---|
325 | (defparameter *ppc-subprims-base* (ash 5 12) ) |
---|
326 | ) |
---|
327 | |
---|
328 | ;;; For now, nothing's nailed down and we don't say anything about |
---|
329 | ;;; registers clobbered. |
---|
330 | ;;; These are shared between ppc32 and ppc64. |
---|
331 | (let* ((origin *ppc-subprims-base*) |
---|
332 | (step (ash 1 *ppc-subprims-shift*))) |
---|
333 | (flet ((define-ppc-subprim (name) |
---|
334 | (ccl::make-subprimitive-info :name (string name) |
---|
335 | :offset (prog1 origin |
---|
336 | (incf origin step))))) |
---|
337 | (macrolet ((defppcsubprim (name) |
---|
338 | `(define-ppc-subprim ',name))) |
---|
339 | (defparameter *ppc-subprims* |
---|
340 | (vector |
---|
341 | (defppcsubprim .SPjmpsym) |
---|
342 | (defppcsubprim .SPjmpnfn) |
---|
343 | (defppcsubprim .SPfuncall) |
---|
344 | (defppcsubprim .SPmkcatch1v) |
---|
345 | (defppcsubprim .SPmkunwind) |
---|
346 | (defppcsubprim .SPmkcatchmv) |
---|
347 | (defppcsubprim .SPthrow) |
---|
348 | (defppcsubprim .SPnthrowvalues) |
---|
349 | (defppcsubprim .SPnthrow1value) |
---|
350 | (defppcsubprim .SPbind) |
---|
351 | (defppcsubprim .SPbind-self) |
---|
352 | (defppcsubprim .SPbind-nil) |
---|
353 | (defppcsubprim .SPbind-self-boundp-check) |
---|
354 | (defppcsubprim .SPrplaca) |
---|
355 | (defppcsubprim .SPrplacd) |
---|
356 | (defppcsubprim .SPconslist) |
---|
357 | (defppcsubprim .SPconslist-star) |
---|
358 | (defppcsubprim .SPstkconslist) |
---|
359 | (defppcsubprim .SPstkconslist-star) |
---|
360 | (defppcsubprim .SPmkstackv) |
---|
361 | (defppcsubprim .SPsubtag-misc-ref) |
---|
362 | (defppcsubprim .SPsetqsym) |
---|
363 | (defppcsubprim .SPprogvsave) |
---|
364 | (defppcsubprim .SPstack-misc-alloc) |
---|
365 | (defppcsubprim .SPgvector) |
---|
366 | (defppcsubprim .SPnvalret) |
---|
367 | (defppcsubprim .SPmvpass) |
---|
368 | (defppcsubprim .SPfitvals) |
---|
369 | (defppcsubprim .SPnthvalue) |
---|
370 | (defppcsubprim .SPvalues) |
---|
371 | (defppcsubprim .SPdefault-optional-args) |
---|
372 | (defppcsubprim .SPopt-supplied-p) |
---|
373 | (defppcsubprim .SPheap-rest-arg) |
---|
374 | (defppcsubprim .SPreq-heap-rest-arg) |
---|
375 | (defppcsubprim .SPheap-cons-rest-arg) |
---|
376 | (defppcsubprim .SPsimple-keywords) |
---|
377 | (defppcsubprim .SPkeyword-args) |
---|
378 | (defppcsubprim .SPkeyword-bind) |
---|
379 | (defppcsubprim .SPpoweropen-ffcall) |
---|
380 | (defppcsubprim .SParef2) |
---|
381 | (defppcsubprim .SPksignalerr) |
---|
382 | (defppcsubprim .SPstack-rest-arg) |
---|
383 | (defppcsubprim .SPreq-stack-rest-arg) |
---|
384 | (defppcsubprim .SPstack-cons-rest-arg) |
---|
385 | (defppcsubprim .SPpoweropen-callbackX) |
---|
386 | (defppcsubprim .SPcall-closure) |
---|
387 | (defppcsubprim .SPgetXlong) |
---|
388 | (defppcsubprim .SPspreadargz) |
---|
389 | (defppcsubprim .SPtfuncallgen) |
---|
390 | (defppcsubprim .SPtfuncallslide) |
---|
391 | (defppcsubprim .SPtfuncallvsp) |
---|
392 | (defppcsubprim .SPtcallsymgen) |
---|
393 | (defppcsubprim .SPtcallsymslide) |
---|
394 | (defppcsubprim .SPtcallsymvsp) |
---|
395 | (defppcsubprim .SPtcallnfngen) |
---|
396 | (defppcsubprim .SPtcallnfnslide) |
---|
397 | (defppcsubprim .SPtcallnfnvsp) |
---|
398 | (defppcsubprim .SPmisc-ref) |
---|
399 | (defppcsubprim .SPmisc-set) |
---|
400 | (defppcsubprim .SPstkconsyz) |
---|
401 | (defppcsubprim .SPstkvcell0) |
---|
402 | (defppcsubprim .SPstkvcellvsp) |
---|
403 | (defppcsubprim .SPmakestackblock) |
---|
404 | (defppcsubprim .SPmakestackblock0) |
---|
405 | (defppcsubprim .SPmakestacklist) |
---|
406 | (defppcsubprim .SPstkgvector) |
---|
407 | (defppcsubprim .SPmisc-alloc) |
---|
408 | (defppcsubprim .SPpoweropen-ffcallX) |
---|
409 | (defppcsubprim .SPgvset) |
---|
410 | (defppcsubprim .SPmacro-bind) |
---|
411 | (defppcsubprim .SPdestructuring-bind) |
---|
412 | (defppcsubprim .SPdestructuring-bind-inner) |
---|
413 | (defppcsubprim .SPrecover-values) |
---|
414 | (defppcsubprim .SPvpopargregs) |
---|
415 | (defppcsubprim .SPinteger-sign) |
---|
416 | (defppcsubprim .SPsubtag-misc-set) |
---|
417 | (defppcsubprim .SPspread-lexpr-z) |
---|
418 | (defppcsubprim .SPstore-node-conditional) |
---|
419 | (defppcsubprim .SPreset) |
---|
420 | (defppcsubprim .SPmvslide) |
---|
421 | (defppcsubprim .SPsave-values) |
---|
422 | (defppcsubprim .SPadd-values) |
---|
423 | (defppcsubprim .SPpoweropen-callback) |
---|
424 | (defppcsubprim .SPmisc-alloc-init) |
---|
425 | (defppcsubprim .SPstack-misc-alloc-init) |
---|
426 | (defppcsubprim .SPset-hash-key) |
---|
427 | (defppcsubprim .SPaset2) |
---|
428 | (defppcsubprim .SPcallbuiltin) |
---|
429 | (defppcsubprim .SPcallbuiltin0) |
---|
430 | (defppcsubprim .SPcallbuiltin1) |
---|
431 | (defppcsubprim .SPcallbuiltin2) |
---|
432 | (defppcsubprim .SPcallbuiltin3) |
---|
433 | (defppcsubprim .SPpopj) |
---|
434 | (defppcsubprim .SPrestorefullcontext) |
---|
435 | (defppcsubprim .SPsavecontextvsp) |
---|
436 | (defppcsubprim .SPsavecontext0) |
---|
437 | (defppcsubprim .SPrestorecontext) |
---|
438 | (defppcsubprim .SPlexpr-entry) |
---|
439 | (defppcsubprim .SPpoweropen-syscall) |
---|
440 | (defppcsubprim .SPbuiltin-plus) |
---|
441 | (defppcsubprim .SPbuiltin-minus) |
---|
442 | (defppcsubprim .SPbuiltin-times) |
---|
443 | (defppcsubprim .SPbuiltin-div) |
---|
444 | (defppcsubprim .SPbuiltin-eq) |
---|
445 | (defppcsubprim .SPbuiltin-ne) |
---|
446 | (defppcsubprim .SPbuiltin-gt) |
---|
447 | (defppcsubprim .SPbuiltin-ge) |
---|
448 | (defppcsubprim .SPbuiltin-lt) |
---|
449 | (defppcsubprim .SPbuiltin-le) |
---|
450 | (defppcsubprim .SPbuiltin-eql) |
---|
451 | (defppcsubprim .SPbuiltin-length) |
---|
452 | (defppcsubprim .SPbuiltin-seqtype) |
---|
453 | (defppcsubprim .SPbuiltin-assq) |
---|
454 | (defppcsubprim .SPbuiltin-memq) |
---|
455 | (defppcsubprim .SPbuiltin-logbitp) |
---|
456 | (defppcsubprim .SPbuiltin-logior) |
---|
457 | (defppcsubprim .SPbuiltin-logand) |
---|
458 | (defppcsubprim .SPbuiltin-ash) |
---|
459 | (defppcsubprim .SPbuiltin-negate) |
---|
460 | (defppcsubprim .SPbuiltin-logxor) |
---|
461 | (defppcsubprim .SPbuiltin-aref1) |
---|
462 | (defppcsubprim .SPbuiltin-aset1) |
---|
463 | (defppcsubprim .SPbreakpoint) |
---|
464 | (defppcsubprim .SPeabi-ff-call) |
---|
465 | (defppcsubprim .SPeabi-callback) |
---|
466 | (defppcsubprim .SPeabi-syscall) |
---|
467 | (defppcsubprim .SPgetu64) |
---|
468 | (defppcsubprim .SPgets64) |
---|
469 | (defppcsubprim .SPmakeu64) |
---|
470 | (defppcsubprim .SPmakes64) |
---|
471 | (defppcsubprim .SPspecref) |
---|
472 | (defppcsubprim .SPspecset) |
---|
473 | (defppcsubprim .SPspecrefcheck) |
---|
474 | (defppcsubprim .SPrestoreintlevel) |
---|
475 | (defppcsubprim .SPmakes32) |
---|
476 | (defppcsubprim .SPmakeu32) |
---|
477 | (defppcsubprim .SPgets32) |
---|
478 | (defppcsubprim .SPgetu32) |
---|
479 | (defppcsubprim .SPfix-overflow) |
---|
480 | (defppcsubprim .SPmvpasssym) |
---|
481 | (defppcsubprim .SParef3) |
---|
482 | (defppcsubprim .SPaset3) |
---|
483 | (defppcsubprim .SPpoweropen-ffcall-return-registers) |
---|
484 | (defppcsubprim .SPnmkunwind) |
---|
485 | (defppcsubprim .SPset-hash-key-conditional) |
---|
486 | (defppcsubprim .SPunbind-interrupt-level) |
---|
487 | (defppcsubprim .SPunbind) |
---|
488 | (defppcsubprim .SPunbind-n) |
---|
489 | (defppcsubprim .SPunbind-to) |
---|
490 | (defppcsubprim .SPbind-interrupt-level-m1) |
---|
491 | (defppcsubprim .SPbind-interrupt-level) |
---|
492 | (defppcsubprim .SPbind-interrupt-level-0) |
---|
493 | (defppcsubprim .SPprogvrestore) |
---|
494 | ))))) |
---|
495 | |
---|
496 | |
---|
497 | |
---|
498 | (provide "PPC-ARCH") |
---|