Changeset 4982
- Timestamp:
- Aug 20, 2006, 10:56:17 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/lisp-kernel/x86-macros.s (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/lisp-kernel/x86-macros.s
r4753 r4982 445 445 macro_label(done): 446 446 ]) 447 447 448 /* This should only be called from a foreign context; it should be */ 449 /* assumed to bash all non-volatile C registers. And of course it's */ 450 /* ugly, awful, non-portable, and slow. %rdi should point to the */ 451 /* linear address that %gs should be made to address (tcr or pthread data) */ 452 453 ifdef([DARWIN_GS_HACK],[ 454 define([set_gs_base],[ 455 ifelse($1,[],[ 456 ],[ 457 movq $1,%rdi 458 ]) 459 movl [$]0x3000003,%eax 460 syscall 461 ]) 462 463 /* %gs addresses the tcr. Make it address pthread data before running */ 464 /* foreign code */ 465 466 define([set_foreign_gs_base],[ 467 set_gs_base([%rcontext:tcr.osid]) 468 ]) 469 470 /* %gs addresses the tcr. Get the linear address of the tcr and */ 471 /* copy it to $1 */ 472 473 define([save_tcr_linear],[ 474 movq %rcontxt:tcr.linear,$1 475 ]) 476 477 ]) 478 479
Note:
See TracChangeset
for help on using the changeset viewer.
