Changeset 9399


Ignore:
Timestamp:
May 8, 2008, 4:11:43 AM (11 years ago)
Author:
rme
Message:

create_thread_context: use the foreign stack pointer, duh.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/lisp-kernel/x86-exceptions.c

    r9144 r9399  
    367367#ifdef X8632
    368368  if (fulltag_of(tra) == fulltag_tra) {
    369     if (*((unsigned char *)(tra)) == RECOVER_FN_OPCODE) {
    370       tra_f = (LispObj)(*((natural *)(tra + 1)));
     369    unsigned char *p = (unsigned char *)tra;
     370
     371    if (*p == RECOVER_FN_OPCODE) {
     372      tra_f = (LispObj)(*((natural *)(p + 1)));
    371373    }
    372374    if (tra_f && header_subtag(header_of(tra_f)) != subtag_function) {
     
    383385  if (fulltag_of(f) == fulltag_function) {
    384386#else
    385   if (header_subtag(header_of(f)) == subtag_function) {
     387  if (fulltag_of(f) == fulltag_misc &&
     388      header_subtag(header_of(f)) == subtag_function) {
    386389#endif
    387390    nominal_function = f;
     
    22962299  stackp = TRUNC_DOWN(stackp, C_REDZONE_LEN, C_STK_ALIGN);
    22972300#else
    2298   stackp = (LispObj) ts->__esp;
     2301  stackp = (LispObj) find_foreign_rsp(ts->__esp, tcr->cs_area, tcr);
    22992302#endif
    23002303  stackp = TRUNC_DOWN(stackp, sizeof(siginfo_t), C_STK_ALIGN);
Note: See TracChangeset for help on using the changeset viewer.