Changeset 8163
- Timestamp:
- Jan 17, 2008, 6:59:18 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.2/devel/source/level-0/X86/x86-misc.lisp
r8137 r8163 253 253 (trap-unless-typecode= ptr x8664::subtag-macptr) 254 254 (call-subprim .SPgetu64) 255 (macptr-ptr ptr ptr)255 (macptr-ptr ptr imm2) 256 256 (unbox-fixnum offset imm1) 257 (movq (% imm0) (@ (% ptr) (% imm1)))257 (movq (% imm0) (@ (% imm2) (% imm1))) 258 258 (restore-simple-frame) 259 259 (single-value-return)) … … 266 266 (trap-unless-typecode= ptr x8664::subtag-macptr) 267 267 (call-subprim .SPgets64) 268 (macptr-ptr ptr ptr)268 (macptr-ptr ptr imm2) 269 269 (unbox-fixnum offset imm1) 270 (movq (% imm0) (@ (% ptr) (% imm1)))270 (movq (% imm0) (@ (% imm2) (% imm1))) 271 271 (restore-simple-frame) 272 272 (single-value-return)) … … 409 409 410 410 (defx86lapfunction %atomic-incf-ptr ((ptr arg_z)) 411 (macptr-ptr ptr ptr)412 @again 413 (movq (@ (% ptr)) (% rax))411 (macptr-ptr ptr imm2) 412 @again 413 (movq (@ (% imm2)) (% rax)) 414 414 (lea (@ 1 (% rax)) (% imm1)) 415 415 (lock) 416 (cmpxchgq (% imm1) (@ (% ptr)))416 (cmpxchgq (% imm1) (@ (% imm2))) 417 417 (jne @again) 418 418 (box-fixnum imm1 arg_z) … … 420 420 421 421 (defx86lapfunction %atomic-incf-ptr-by ((ptr arg_y) (by arg_z)) 422 (macptr-ptr ptr ptr)423 @again 424 (movq (@ (% ptr)) (% rax))422 (macptr-ptr ptr imm2) 423 @again 424 (movq (@ (% imm2)) (% rax)) 425 425 (unbox-fixnum by imm1) 426 426 (add (% rax) (% imm1)) 427 427 (lock) 428 (cmpxchgq (% imm1) (@ (% ptr)))428 (cmpxchgq (% imm1) (@ (% imm2))) 429 429 (jnz @again) 430 430 (box-fixnum imm1 arg_z) … … 433 433 434 434 (defx86lapfunction %atomic-decf-ptr ((ptr arg_z)) 435 (macptr-ptr ptr ptr)436 @again 437 (movq (@ (% ptr)) (% rax))435 (macptr-ptr ptr imm2) 436 @again 437 (movq (@ (% imm2)) (% rax)) 438 438 (lea (@ -1 (% rax)) (% imm1)) 439 439 (lock) 440 (cmpxchgq (% imm1) (@ (% ptr)))440 (cmpxchgq (% imm1) (@ (% imm2))) 441 441 (jnz @again) 442 442 (box-fixnum imm1 arg_z) … … 444 444 445 445 (defx86lapfunction %atomic-decf-ptr-if-positive ((ptr arg_z)) 446 (macptr-ptr ptr ptr) ;must be fixnum-aligned447 @again 448 (movq (@ (% ptr)) (% rax))446 (macptr-ptr ptr imm2) 447 @again 448 (movq (@ (% imm2)) (% rax)) 449 449 (testq (% rax) (% rax)) 450 450 (lea (@ -1 (% rax)) (% imm1)) 451 451 (jz @done) 452 452 (lock) 453 (cmpxchgq (% imm1) (@ (% ptr)))453 (cmpxchgq (% imm1) (@ (% imm2))) 454 454 (jnz @again) 455 455 @done … … 469 469 ;;; was equal to OLDVAL. Return the old value 470 470 (defx86lapfunction %ptr-store-conditional ((ptr arg_x) (expected-oldval arg_y) (newval arg_z)) 471 (macptr-ptr ptr ptr) ; must be fixnum-aligned472 @again 473 (movq (@ (% ptr)) (% imm0))471 (macptr-ptr ptr imm2) 472 @again 473 (movq (@ (% imm2)) (% imm0)) 474 474 (box-fixnum imm0 temp0) 475 475 (cmpq (% temp0) (% expected-oldval)) … … 477 477 (unbox-fixnum newval imm1) 478 478 (lock) 479 (cmpxchgq (% imm1) (@ (% ptr)))479 (cmpxchgq (% imm1) (@ (% imm2))) 480 480 (jne @again) 481 481 @done … … 499 499 (defx86lapfunction xchgl ((newval arg_y) (ptr arg_z)) 500 500 (unbox-fixnum newval imm0) 501 (macptr-ptr ptr arg_y) ; had better be aligned501 (macptr-ptr ptr im1) 502 502 (lock) ; implicit ? 503 (xchgl (% imm0.l) (@ (% arg_y)))503 (xchgl (% imm0.l) (@ (% im1))) 504 504 (box-fixnum imm0 arg_z) 505 505 (single-value-return))
Note:
See TracChangeset
for help on using the changeset viewer.
