Changeset 13706
- Timestamp:
- May 18, 2010, 6:33:06 AM (15 years ago)
- Location:
- branches/arm/level-0/ARM
- Files:
-
- 2 added
- 1 edited
-
arm-def.lisp (added)
-
arm-misc.lisp (modified) (32 diffs)
-
arm-utils.lisp (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/arm/level-0/ARM/arm-misc.lisp
r13699 r13706 42 42 (macptr-ptr src-reg src-node-reg) 43 43 (ldr src-byteptr (:@ vsp (:$ src-byte-offset))) 44 (add src-reg src-reg (:asr src-byte -ptr (:$ arm::fixnumshift)))44 (add src-reg src-reg (:asr src-byteptr (:$ arm::fixnumshift))) 45 45 (unbox-fixnum dest-byteptr dest-byte-offset) 46 46 (add dest-byteptr dest-byteptr (:$ arm::misc-data-offset)) … … 49 49 (subs nbytes nbytes '1) 50 50 (ldrb val (:@+ src-reg (:$ 1))) 51 (strb val (:@ dest (:$ dest-byteptr)))51 (strb val (:@ dest dest-byteptr)) 52 52 (add dest-byteptr dest-byteptr (:$ 1)) 53 53 @test … … 58 58 59 59 (defarmlapfunction %copy-ivector-to-ptr ((src (* 1 arm::node-size)) 60 (src-byte-offset 0) 60 (src-byte-offset 0) 61 61 (dest arg_x) 62 62 (dest-byte-offset arg_y) 63 63 (nbytes arg_z)) 64 (ldr temp0 (:@ vsp (:$ src)) 64 (ldr temp0 (:@ vsp (:$ src))) 65 65 (cmp nbytes (:$ 0)) 66 (ldr imm0 (:@ vsp (:$ src-byte-offset)) 66 (ldr imm0 (:@ vsp (:$ src-byte-offset))) 67 67 (unbox-fixnum imm0 imm0) 68 68 (add imm0 imm0 (:$ arm::misc-data-offset)) … … 76 76 (strb imm2 (:@+ imm1 (:$ 1))) 77 77 @test 78 (bne cr0@loop)78 (bne @loop) 79 79 (mov arg_z dest) 80 80 (add vsp vsp '2) 81 81 (bx lr)) 82 82 83 #+notyet 83 84 (defarmlapfunction %copy-ivector-to-ivector ((src 4) 84 85 (src-byte-offset 0) … … 157 158 158 159 159 160 #+notyet 160 161 (defarmlapfunction %copy-gvector-to-gvector ((src (* 1 arm::node-size)) 161 162 (src-element 0) … … 208 209 209 210 210 211 212 #+ppc32-target213 211 (defarmlapfunction %heap-bytes-allocated () 214 (lwz imm2 arm::tcr.last-allocptr ppc32::rcontext) 215 (cmpwi cr1 imm2 0) 216 (cmpwi allocptr -8) ;void_allocptr 217 (lwz imm0 arm::tcr.total-bytes-allocated-high ppc32::rcontext) 218 (lwz imm1 arm::tcr.total-bytes-allocated-low ppc32::rcontext) 212 (ldr imm2 (:@ rcontext (:$ arm::tcr.last-allocptr))) 213 (ldr imm1 (:@ rcontext (:$ arm::tcr.total-bytes-allocated-high))) 214 (ldr imm0 (:@ rcontext (:$ arm::tcr.total-bytes-allocated-low))) 215 (cmp imm2 (:$ 0)) 219 216 (sub imm2 imm2 allocptr) 220 (beq cr1 @go)221 217 (beq @go) 222 (addc imm1 imm1 imm2) 223 (addze imm0 imm0) 218 (cmp allocptr (:$ -8)) 219 (beq @go) 220 (adds imm1 imm1 imm2) 221 (adc imm0 imm0 (:$ 0)) 224 222 @go 225 (b a.SPmakeu64))223 (b .SPmakeu64)) 226 224 227 225 … … 236 234 ;; It would be nice if (%setf-macptr macptr (ash (the fixnum value) 237 235 ;; ash::fixnumshift)) would do this inline. 238 #+ppc-target239 236 (defarmlapfunction %setf-macptr-to-object ((macptr arg_y) (object arg_z)) 240 237 (check-nargs 2) 241 (trap-unless- typecode= arg_y arm::subtag-macptr)242 (str arg_z arm::macptr.address arg_y)238 (trap-unless-xtype= arg_y arm::subtag-macptr) 239 (str arg_z (:@ arg_y (:$ arm::macptr.address))) 243 240 (bx lr)) 244 241 245 242 (defarmlapfunction %fixnum-from-macptr ((macptr arg_z)) 246 243 (check-nargs 1) 247 (trap-unless- typecode= arg_z arm::subtag-macptr)248 (ldr imm0 arm::macptr.address arg_z)249 (trap-unless- lisptag= imm0 arm::tag-fixnum imm1)250 (m rarg_z imm0)244 (trap-unless-xtype= arg_z arm::subtag-macptr) 245 (ldr imm0 (:@ arg_z (:$ arm::macptr.address))) 246 (trap-unless-fixnum imm0) 247 (mov arg_z imm0) 251 248 (bx lr)) 252 249 253 250 (defarmlapfunction %%get-unsigned-longlong ((ptr arg_y) (offset arg_z)) 254 (trap-unless- typecode= ptr ppc32::subtag-macptr)251 (trap-unless-xtype= ptr arm::subtag-macptr) 255 252 (macptr-ptr imm1 ptr) 256 253 (unbox-fixnum imm2 offset) 257 254 (add imm2 imm2 imm1) 258 (l wz imm0 0 imm2)259 (l wz imm1 4 imm2)255 (ldr imm0 (:@ imm2 (:$ 0))) 256 (ldr imm1 (:@ imm2 (:$ 4))) 260 257 (ba .SPmakeu64)) 261 258 … … 263 260 264 261 (defarmlapfunction %%get-signed-longlong ((ptr arg_y) (offset arg_z)) 265 (trap-unless- typecode= ptr ppc32::subtag-macptr)262 (trap-unless-xtype= ptr arm::subtag-macptr) 266 263 (macptr-ptr imm1 ptr) 267 264 (unbox-fixnum imm2 offset) 268 265 (add imm2 imm2 imm1) 269 (l wz imm0 0 imm2)270 (l wz imm1 4 imm2)266 (ldr imm0 (:@ imm2 (:$ 0))) ;low 267 (ldr imm1 (:@ imm2 (:$ 1))) ;high 271 268 (ba .SPmakes64)) 272 269 273 #+ppc64-target 274 (defarmlapfunction %%get-signed-longlong ((ptr arg_y) (offset arg_z)) 275 (trap-unless-typecode= ptr ppc64::subtag-macptr) 276 (macptr-ptr imm1 ptr) 277 (unbox-fixnum imm2 offset) 278 (ldx imm0 imm2 imm1) 279 (ba .SPmakes64)) 280 281 #+ppc32-target 282 (defarmlapfunction %%set-unsigned-longlong ((ptr arg_x) 283 (offset arg_y) 284 (val arg_z)) 285 (save-lisp-context) 286 (trap-unless-typecode= ptr ppc32::subtag-macptr) 287 (bla .SPgetu64) 288 (macptr-ptr imm2 ptr) 289 (unbox-fixnum imm3 offset) 290 (add imm2 imm3 imm2) 291 (stw imm0 0 imm2) 292 (stw imm1 4 imm2) 293 (ba .SPpopj)) 294 295 #+ppc64-target 270 271 296 272 (defarmlapfunction %%set-unsigned-longlong ((ptr arg_x) 297 273 (offset arg_y) 298 274 (val arg_z)) 299 (save-lisp-context) 300 (trap-unless-typecode= ptr ppc64::subtag-macptr) 301 (bla .SPgetu64) 275 (build-lisp-frame imm0) 276 (mov fn nfn) 277 (trap-unless-xtype= ptr arm::subtag-macptr) 278 (bl .SPgetu64) 302 279 (macptr-ptr imm2 ptr) 303 (unbox-fixnum imm3 offset) 304 (stdx imm0 imm3 imm2) 305 (ba .SPpopj)) 306 307 #+ppc32-target 308 (defarmlapfunction %%set-signed-longlong ((ptr arg_x) 309 (offset arg_y) 310 (val arg_z)) 311 (save-lisp-context) 312 (trap-unless-typecode= ptr ppc32::subtag-macptr) 313 (bla .SPgets64) 314 (macptr-ptr imm2 ptr) 315 (unbox-fixnum imm3 offset) 316 (add imm2 imm3 imm2) 317 (stw imm0 0 imm2) 318 (stw imm1 4 imm2) 319 (ba .SPpopj)) 320 321 #+ppc64-target 280 (add imm2 imm2 (:asr offset (:$ arm::fixnumshift))) 281 (str imm0 (:@ imm2 (:$ 0))) 282 (str imm1 (:@ imm2 (:$ 4))) 283 (return-lisp-frame imm0)) 284 285 286 322 287 (defarmlapfunction %%set-signed-longlong ((ptr arg_x) 323 288 (offset arg_y) 324 289 (val arg_z)) 325 (save-lisp-context) 326 (trap-unless-typecode= ptr arm::subtag-macptr) 327 (bla .SPgets64) 290 (build-lisp-frame imm0) 291 (mov fn nfn) 292 (trap-unless-xtype= ptr arm::subtag-macptr) 293 (bl .SPgets64) 328 294 (macptr-ptr imm2 ptr) 329 (unbox-fixnum imm3 offset) 330 (stdx imm0 imm3 imm2) 331 (ba .SPpopj)) 295 (add imm2 imm2 (:asr offset (:$ arm::fixnumshift))) 296 (str imm0 (:@ imm2 (:$ 0))) 297 (str imm1 (:@ imm2 (:$ 4))) 298 (return-lisp-frame imm0)) 299 300 332 301 333 302 (defarmlapfunction interrupt-level () 334 (ldr arg_z arm::tcr.tlb-pointer arm::rcontext)335 (ldr arg_z arm::interrupt-level-binding-index arg_z)303 (ldr arg_z (:@ arm::rcontext (:$ arm::tcr.tlb-pointer))) 304 (ldr arg_z (:@ arg_z (:$ arm::interrupt-level-binding-index))) 336 305 (bx lr)) 337 306 … … 340 309 341 310 (defarmlapfunction set-interrupt-level ((new arg_z)) 342 (ldr imm1 arm::tcr.tlb-pointer arm::rcontext)343 (trap-unless- lisptag= new arm::tag-fixnum imm0)344 (str new arm::interrupt-level-binding-index imm1)311 (ldr imm1 (:@ arm::rcontext (:$ arm::tcr.tlb-pointer))) 312 (trap-unless-fixnum new) 313 (str new (:@ imm1 (:$ arm::interrupt-level-binding-index))) 345 314 (bx lr)) 346 315 … … 353 322 (defarmlapfunction %tcr-toplevel-function ((tcr arg_z)) 354 323 (check-nargs 1) 355 (cmpr tcr arm::rcontext) 356 (mr imm0 vsp) 357 (ldr temp0 arm::tcr.vs-area tcr) 358 (ldr imm1 arm::area.high temp0) 359 (beq @room) 360 (ldr imm0 arm::area.active temp0) 361 @room 362 (cmpr imm1 imm0) 363 (li arg_z nil) 364 (beqlr) 365 (ldr arg_z (- arm::node-size) imm1) 324 (cmp tcr arm::rcontext) 325 (mov imm0 vsp) 326 (ldr temp0 (:@ tcr (:$ arm::tcr.vs-area))) 327 (ldr imm1 (:@ temp0 (:$ arm::area.high))) 328 (ldrne imm0 (:@ temp0 (:$ arm::area.active))) 329 (cmp imm1 imm0) 330 (moveq arg_z 'nil) 331 (ldrne arg_z (:@ imm1 (:$ (- arm::node-size)))) 366 332 (bx lr)) 367 333 368 334 (defarmlapfunction %set-tcr-toplevel-function ((tcr arg_y) (fun arg_z)) 369 335 (check-nargs 2) 370 (cmpr tcr arm::rcontext) 371 (mr imm0 vsp) 372 (ldr temp0 arm::tcr.vs-area tcr) 373 (ldr imm1 arm::area.high temp0) 374 (beq @check-room) 375 (ldr imm0 arm::area.active temp0) 376 @check-room 377 (cmpr imm1 imm0) 378 (push rzero imm1) 379 (bne @have-room) 380 (str imm1 arm::area.active temp0) 381 (str imm1 arm::tcr.save-vsp tcr) 382 @have-room 383 (str fun 0 imm1) 336 (cmp tcr arm::rcontext) 337 (mov imm0 vsp) 338 (ldr temp0 (:@ tcr (:$ arm::tcr.vs-area))) 339 (ldr imm1 (:@ temp0 (:$ arm::area.high))) 340 (ldrne imm0 (:@ temp0 (:$ arm::area.active))) 341 (cmp imm1 imm0) 342 (mov imm0 ($ 0)) 343 (push1 imm0 imm1) 344 (streq imm1 (:@ temp0 (:$ arm::area.active))) 345 (streq imm1 (:@ tcr (:$ arm::tcr.save-vsp))) 346 (str fun (:@ imm1 (:$ 0))) 384 347 (bx lr)) 385 348 … … 388 351 (ba .SPstore-node-conditional)) 389 352 353 #+notyet ; needs a subprim on ARM 390 354 (defarmlapfunction %store-immediate-conditional ((offset 0) (object arg_x) (old arg_y) (new arg_z)) 391 355 (vpop temp0) … … 407 371 (bx lr))) 408 372 373 #+notyet ; needs ARM subprim ? 409 374 (defarmlapfunction set-%gcable-macptrs% ((ptr arm::arg_z)) 410 375 (li imm0 (+ (target-nil-value) (arm::kernel-global gcable-pointers))) … … 419 384 ;;; Atomically increment or decrement the gc-inhibit-count kernel-global 420 385 ;;; (It's decremented if it's currently negative, incremented otherwise.) 386 #+notyet ;needs ARM subprim ? 421 387 (defarmlapfunction %lock-gc-lock () 422 388 (li imm0 (+ (target-nil-value) (arm::kernel-global gc-inhibit-count))) … … 436 402 ;;; (It's incremented if it's currently negative, incremented otherwise.) 437 403 ;;; If it's incremented from -1 to 0, try to GC (maybe just a little.) 404 #+notyet ;Needs ARM subprim ? 438 405 (defarmlapfunction %unlock-gc-lock () 439 406 ;; (sync) … … 456 423 457 424 458 425 #+notyet ;needs ARM subprim ? 459 426 (defarmlapfunction %atomic-incf-node ((by arg_x) (node arg_y) (disp arg_z)) 460 427 (check-nargs 3) … … 468 435 (bx lr)) 469 436 437 #+notyet ;needs ARM subprim ? 470 438 (defarmlapfunction %atomic-incf-ptr ((ptr arg_z)) 471 439 (macptr-ptr imm1 ptr) … … 479 447 (bx lr)) 480 448 449 #+notyet ;needs ARM subprim ? 481 450 (defarmlapfunction %atomic-incf-ptr-by ((ptr arg_y) (by arg_z)) 482 451 (macptr-ptr imm1 ptr) … … 491 460 (bx lr)) 492 461 462 #+notyet ;needs ARM subprim 493 463 (defarmlapfunction %atomic-decf-ptr ((ptr arg_z)) 494 464 (macptr-ptr imm1 ptr) … … 502 472 (bx lr)) 503 473 474 #+notyet ;Needs ARM subprim ? 504 475 (defarmlapfunction %atomic-decf-ptr-if-positive ((ptr arg_z)) 505 476 (macptr-ptr imm1 ptr) … … 520 491 (bx lr)) 521 492 493 #+notyet ;guess why not ? 522 494 (defarmlapfunction %atomic-swap-ptr ((ptr arg_y) (newval arg_z)) 523 495 (sync) … … 534 506 ;;; Try to store the fixnum NEWVAL at PTR, if and only if the old value 535 507 ;;; was equal to OLDVAL. Return the old value 508 #notyet ;still 536 509 (defarmlapfunction %ptr-store-conditional ((ptr arg_x) (expected-oldval arg_y) (newval arg_z)) 537 510 (macptr-ptr imm0 ptr) … … 553 526 (bx lr)) 554 527 528 #+notyet ; Yet ? Not. 555 529 (defarmlapfunction %ptr-store-fixnum-conditional ((ptr arg_x) (expected-oldval arg_y) (newval arg_z)) 556 530 (let ((address imm0) … … 564 538 (bne- @again) 565 539 (isync) 566 (m rarg_z actual-oldval)540 (mov arg_z actual-oldval) 567 541 (bx lr) 568 542 @done 569 543 (li address arm::reservation-discharge) 570 (m rarg_z actual-oldval)544 (mov arg_z actual-oldval) 571 545 (strcx. rzero 0 address) 572 546 (bx lr))) … … 577 551 (defarmlapfunction %macptr->dead-macptr ((macptr arg_z)) 578 552 (check-nargs 1) 579 (li imm0 arm::subtag-dead-macptr) 580 (stb imm0 arm::misc-subtag-offset macptr) 581 (bx lr)) 582 553 (mov imm0 (:$ arm::subtag-dead-macptr)) 554 (strb imm0 (:@ macptr (:$ arm::misc-subtag-offset))) 555 (bx lr)) 556 557 #+notyet ;for different reasons 583 558 (defarmlapfunction %%apply-in-frame ((catch-count imm0) (srv temp0) (tsp-count imm0) (db-link imm0) 584 559 (parent arg_x) (function arg_y) (arglist arg_z)) … … 682 657 (stw loc-pc arm::lisp-frame.savelr sp)) 683 658 ;; Parent is a real stack frame 684 (m rsp parent))659 (mov sp parent)) 685 660 (set-nargs 0) 686 661 (bla .SPspreadargz) 687 662 (ba .SPtfuncallgen)) 688 663 689 #+ppc32-target 690 ;;; Easiest to do this in lap, to avoid consing bignums and/or 691 ;;; multiple-value hair. 692 ;;; Bang through code-vector until the end or a 0 (traceback table 693 ;;; header) is found. Return high-half, low-half of last instruction 694 ;;; and index where found. 695 (defarmlapfunction %code-vector-last-instruction ((cv arg_z)) 696 (let ((previ imm0) 697 (nexti imm1) 698 (idx imm2) 699 (offset imm3) 700 (len imm4)) 701 (vector-length len cv len) 702 (li idx 0) 703 (cmpw cr0 idx len) 704 (li offset arm::misc-data-offset) 705 (li nexti 0) 706 (b @test) 707 @loop 708 (mr previ nexti) 709 (lwzx nexti cv offset) 710 (cmpwi cr1 nexti 0) 711 (addi idx idx '1) 712 (cmpw cr0 idx len) 713 (addi offset offset '1) 714 (beq cr1 @done) 715 @test 716 (bne cr0 @loop) 717 (mr previ nexti) 718 @done 719 (digit-h temp0 previ) 720 (digit-l temp1 previ) 721 (subi idx idx '1) 722 (vpush temp0) 723 (vpush temp1) 724 (vpush idx) 725 (set-nargs 3) 726 (la temp0 '3 vsp) 727 (ba .SPvalues))) 728 729 #+ppc64-target 730 (defun %code-vector-last-instruction (cv) 731 (do* ((i 1 (1+ i)) 732 (instr nil) 733 (n (uvsize cv))) 734 ((= i n) instr) 735 (declare (fixnum i n)) 736 (let* ((next (uvref cv i))) 737 (declare (type (unsigned-byte 32) next)) 738 (if (zerop next) 739 (return instr) 740 (setq instr next))))) 664 741 665 742 666 … … 754 678 (defarmlapfunction %misc-address-fixnum ((misc-object arg_z)) 755 679 (check-nargs 1) 756 ( la arg_z arm::misc-data-offset misc-object)680 (add arg_z misc-object (:$ arm::misc-data-offset)) 757 681 (bx lr)) 758 682 … … 761 685 (check-nargs 3) 762 686 (macptr-ptr imm1 ptr) ; address in macptr 763 (add i imm0 imm1 9) ; 2 for delta + 7 for alignment764 ( clrrwi imm0 imm0 3) ; Clear low three bits to align765 ( subfimm1 imm1 imm0) ; imm1 = delta766 (st h imm1 -2 imm0) ; save delta halfword687 (add imm0 imm1 (:$ 9)) ; 2 for delta + 7 for alignment 688 (bic imm0 imm0 (:$ 7)) ; Clear low three bits to align 689 (rsb imm1 imm1 imm0) ; imm1 = delta 690 (strh imm1 (:@ imm0 (:$ -2))) ; save delta halfword 767 691 (unbox-fixnum imm1 subtype) ; subtype at low end of imm1 768 ( rlwimi imm1 len (- arm::num-subtag-bits arm::fixnum-shift) 0 (- 31 arm::num-subtag-bits))769 (st w imm1 0 imm0) ; store subtype & length770 (add i arg_z imm0 arm::fulltag-misc) ; tag it, return it692 (orr imm1 imm1 (:lsl len (:$ (- arm::num-subtag-bits arm::fixnum-shift)))) 693 (str imm1 (:@ imm0 (:$ 0))) ; store subtype & length 694 (add arg_z imm0 (:$ arm::fulltag-misc)) ; tag it, return it 771 695 (bx lr)) 772 696 … … 775 699 (defarmlapfunction %%make-disposable ((ptr arg_y) (vector arg_z)) 776 700 (check-nargs 2) 777 (sub i imm0 vector arm::fulltag-misc) ; imm0 is addr = vect less tag778 (l hz imm1 -2 imm0) ; get delta701 (sub imm0 vector (:$ arm::fulltag-misc)) ; imm0 is addr = vect less tag 702 (ldrh imm1 (:@ imm0 (:$ -2))) ; get delta 779 703 (sub imm0 imm0 imm1) ; vector addr (less tag) - delta is orig addr 780 (str imm0 arm::macptr.address ptr) 781 (bx lr)) 782 783 #+arm-target 704 (str imm0 (:@ ptr (:$ arm::macptr.address))) 705 (bx lr)) 706 784 707 (defarmlapfunction %vect-data-to-macptr ((vect arg_y) (ptr arg_z)) 785 708 ;; put address of vect data in macptr. For all vector types 786 709 ;; other than DOUBLE-FLOAT (or vectors thereof), the first byte 787 ;; of data is at PPC32::MISC-DATA-OFFSET; for the double-float788 ;; types, it's at PPC32::MISC-DFLOAT-OFFSET.710 ;; of data is at ARM::MISC-DATA-OFFSET; for the double-float 711 ;; types, it's at ARM::MISC-DFLOAT-OFFSET. 789 712 (extract-subtag imm0 vect) 790 (cmpwi cr0 imm0 ppc32::subtag-double-float-vector) 791 (cmpwi cr1 imm0 ppc32::subtag-double-float) 792 (addi temp0 vect ppc32::misc-data-offset) 793 (beq cr0 @dfloat) 794 (beq cr1 @dfloat) 795 (stw temp0 ppc32::macptr.address arg_z) 796 (bx lr) 797 @dfloat 798 (addi temp0 vect ppc32::misc-dfloat-offset) 799 (stw temp0 ppc32::macptr.address arg_z) 800 (bx lr)) 801 802 803 804 713 (cmp imm0 (:$ arm::subtag-double-float-vector)) 714 (cmpne imm0 (:$ arm::subtag-double-float)) 715 (addne temp0 vect (:$ arm::misc-data-offset)) 716 (addeq temp0 vect (:$ arm::misc-dfloat-offset)) 717 (str temp0 (:@ arg_z (:$ arm::macptr.address))) 718 (bx lr)) 805 719 806 720 807 721 (defarmlapfunction %current-db-link () 808 (ldr arg_z arm::tcr.db-link arm::rcontext)722 (ldr arg_z (:@ arm::rcontext (:$ arm::tcr.db-link))) 809 723 (bx lr)) 810 724 811 725 (defarmlapfunction %no-thread-local-binding-marker () 812 (li arg_z arm::subtag-no-thread-local-binding) 813 (bx lr)) 814 815 726 (mov arg_z (:$ arm::subtag-no-thread-local-binding)) 727 (bx lr)) 816 728 817 729 … … 821 733 (check-nargs 2) 822 734 (macptr-ptr imm0 src) 823 (str imm0 arm::tcr.safe-ref-address arm::rcontext)824 (ldr imm0 0 imm0) ; may fault825 (str imm0 arm::macptr.address dest)735 (str imm0 (:@ arm::rcontext (:$ arm::tcr.safe-ref-address))) 736 (ldr imm0 (:@ imm0 (:$ 0))) ; may fault 737 (str imm0 (:@ dest (:$ arm::macptr.address))) 826 738 (bx lr)) 827 739 … … 831 743 ;;; That's maintained in r2 on LinuxPPC32, and not maintained 832 744 ;;; in a GPR on DarwinPPC32 745 #+huh 833 746 (defarmlapfunction %get-os-context () 834 #+ppc64-target (mr arg_z 13) 835 #+linuxppc32-target (mr arg_z 2) 836 #+darinppc32-target (mr arg_z 0) 837 (bx lr)) 838 747 #+ppc64-target (mov arg_z 13) 748 #+linuxppc32-target (mov arg_z 2) 749 #+darinppc32-target (mov arg_z 0) 750 (bx lr)) 751 752 #+bad-idea 839 753 (defarmlapfunction %check-deferred-gc () 840 754 (ldr imm0 arm::tcr.flags arm::rcontext) … … 845 759 (li arg_z t) 846 760 (bx lr)) 761 762 #+later 763 (progn 847 764 848 765 (defarmlapfunction %%tcr-interrupt ((target arg_z)) … … 942 859 (li arg_z nil) 943 860 (bx lr)) 944 861 ); #+later 862 945 863 946 864 ; end of arm-misc.lisp
Note:
See TracChangeset
for help on using the changeset viewer.
