Changeset 9585
- Timestamp:
- May 22, 2008, 9:11:02 PM (17 years ago)
- File:
-
- 1 edited
-
branches/ia32/lisp-kernel/x86-gc.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/lisp-kernel/x86-gc.c
r9542 r9585 1720 1720 #else 1721 1721 void 1722 mark_xp(ExceptionInformation *xp, unsigned charnode_regs_mask)1722 mark_xp(ExceptionInformation *xp, natural node_regs_mask) 1723 1723 { 1724 1724 natural *regs = (natural *) xpGPRvector(xp), dnode; … … 1726 1726 int i; 1727 1727 1728 for (i = 0; i < 8; i++) 1729 if (node_regs_mask & (1<<i)) 1730 mark_root(regs[i]); 1728 if (node_regs_mask & (1<<0)) mark_root(regs[REG_EAX]); 1729 if (node_regs_mask & (1<<1)) mark_root(regs[REG_EBX]); 1730 if (node_regs_mask & (1<<2)) mark_root(regs[REG_ECX]); 1731 if (node_regs_mask & (1<<3)) mark_root(regs[REG_EDX]); 1732 if (node_regs_mask & (1<<4)) mark_root(regs[REG_ESP]); 1733 if (node_regs_mask & (1<<5)) mark_root(regs[REG_EBP]); 1734 if (node_regs_mask & (1<<6)) mark_root(regs[REG_ESI]); 1735 if (node_regs_mask & (1<<7)) mark_root(regs[REG_EDI]); 1731 1736 1732 1737 /* If the EIP isn't pointing into a marked function, we're probably … … 2372 2377 } 2373 2378 2379 #ifdef X8664 2374 2380 void 2375 2381 forward_xp(ExceptionInformation *xp) … … 2377 2383 natural *regs = (natural *) xpGPRvector(xp); 2378 2384 2379 #ifdef X86642380 2385 update_noderef(&(regs[Iarg_z])); 2381 2386 update_noderef(&(regs[Iarg_y])); … … 2390 2395 update_noderef(&(regs[Itemp2])); 2391 2396 update_locref(&(regs[Iip])); 2397 } 2392 2398 #else 2393 update_noderef(&(regs[Iarg_z])); 2394 update_noderef(&(regs[Iarg_y])); 2395 update_noderef(&(regs[Ifn])); 2396 update_noderef(&(regs[Itemp0])); 2397 update_noderef(&(regs[Itemp1])); 2399 void 2400 forward_xp(ExceptionInformation *xp, natural node_regs_mask) 2401 { 2402 natural *regs = (natural *) xpGPRvector(xp); 2403 2404 if (node_regs_mask & (1<<0)) update_noderef(®s[REG_EAX]); 2405 if (node_regs_mask & (1<<1)) update_noderef(®s[REG_EBX]); 2406 if (node_regs_mask & (1<<2)) update_noderef(®s[REG_ECX]); 2407 if (node_regs_mask & (1<<3)) update_noderef(®s[REG_EDX]); 2408 if (node_regs_mask & (1<<4)) update_noderef(®s[REG_ESP]); 2409 if (node_regs_mask & (1<<5)) update_noderef(®s[REG_EBP]); 2410 if (node_regs_mask & (1<<6)) update_noderef(®s[REG_ESI]); 2411 if (node_regs_mask & (1<<7)) update_noderef(®s[REG_EDI]); 2412 2398 2413 update_locref(&(regs[Iip])); 2399 2414 #endif … … 2427 2442 xp = tcr->gc_context; 2428 2443 if (xp) { 2444 #ifdef X8664 2429 2445 forward_xp(xp); 2446 #else 2447 forward_xp(xp, tcr->node_regs_mask); 2448 #endif 2430 2449 } 2431 2450 for (xframes = tcr->xframe; xframes; xframes = xframes->prev) { 2451 #ifdef X8664 2432 2452 forward_xp(xframes->curr); 2453 #else 2454 forward_xp(xframes->curr, xframes->node_regs_mask); 2455 #endif 2433 2456 } 2434 2457 }
Note:
See TracChangeset
for help on using the changeset viewer.
