faults.cc (2800:18a615ca6e19) | faults.cc (2808:a88ea76f6738) |
---|---|
1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 180 unchanged lines hidden (view full) --- 189 Process *p = tc->getProcessPtr(); 190 191 // address is higher than the stack region or in the current stack region 192 if (vaddr > p->stack_base || vaddr > p->stack_min) 193 FaultBase::invoke(tc); 194 195 // We've accessed the next page 196 if (vaddr > p->stack_min - PageBytes) { | 1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 180 unchanged lines hidden (view full) --- 189 Process *p = tc->getProcessPtr(); 190 191 // address is higher than the stack region or in the current stack region 192 if (vaddr > p->stack_base || vaddr > p->stack_min) 193 FaultBase::invoke(tc); 194 195 // We've accessed the next page 196 if (vaddr > p->stack_min - PageBytes) { |
197 warn("Increasing stack %#x:%#x to %#x:%#x because of access to %#x", 198 p->stack_min, p->stack_base, p->stack_min - PageBytes, 199 p->stack_base, vaddr); |
|
197 p->stack_min -= PageBytes; 198 if (p->stack_base - p->stack_min > 8*1024*1024) 199 fatal("Over max stack size for one thread\n"); 200 p->pTable->allocate(p->stack_min, PageBytes); | 200 p->stack_min -= PageBytes; 201 if (p->stack_base - p->stack_min > 8*1024*1024) 202 fatal("Over max stack size for one thread\n"); 203 p->pTable->allocate(p->stack_min, PageBytes); |
201 warn("Increasing stack size by one page."); | |
202 } else { 203 FaultBase::invoke(tc); 204 } 205} 206 207#endif 208 209} // namespace AlphaISA 210 | 204 } else { 205 FaultBase::invoke(tc); 206 } 207} 208 209#endif 210 211} // namespace AlphaISA 212 |