A multithreaded processor for executing a plurality of threads, the multithreaded processor comprising: a first control register configured to store a stack limit value; a second control register configured to store a plurality of stack limit enable bits, each stack limit enable bit of the plurality of stack limit enable bits corresponding to a respective thread of the plurality of threads; instruction decode logic configured to: receive a procedure entry instruction for a stack associated with a first thread of the plurality of threads; determine a value of a first stack limit enable bit of the plurality of stack limit enable bits that is associated with the first thread; and responsive to the value of the first stack limit enable bit indicating a first state of the first stack limit enable bit, check the stack limit value; determine whether to throw a stack limit exception based on the stack limit value and a first predefined stack region size associated with the stack; and responsive to the value of the first stack limit enable bit indicating a second state of the first stack limit enable bit, execute the procedure entry instruction associated with the first thread without checking the stack limit value; an exception handler configured to handle the stack limit exception by moving the stack from a first memory location associated with the first predefined stack region size to a second memory location associated with a second predefined stack region size greater than the first predefined stack region size and to reset the value of the first stack limit enable bit to indicate the second state of the first stack limit enable bit upon moving the stack from the first memory location to the second memory location. a first control register configured to store a stack limit value; a second control register configured to store a plurality of stack limit enable bits, each stack limit enable bit of the plurality of stack limit enable bits corresponding to a respective thread of the plurality of threads; instruction decode logic configured to: receive a procedure entry instruction for a stack associated with a first thread of the plurality of threads; determine a value of a first stack limit enable bit of the plurality of stack limit enable bits that is associated with the first thread; and responsive to the value of the first stack limit enable bit indicating a first state of the first stack limit enable bit, check the stack limit value; determine whether to throw a stack limit exception based on the stack limit value and a first predefined stack region size associated with the stack; and responsive to the value of the first stack limit enable bit indicating a second state of the first stack limit enable bit, execute the procedure entry instruction associated with the first thread without checking the stack limit value; receive a procedure entry instruction for a stack associated with a first thread of the plurality of threads; determine a value of a first stack limit enable bit of the plurality of stack limit enable bits that is associated with the first thread; and responsive to the value of the first stack limit enable bit indicating a first state of the first stack limit enable bit, check the stack limit value; determine whether to throw a stack limit exception based on the stack limit value and a first predefined stack region size associated with the stack; and responsive to the value of the first stack limit enable bit indicating a second state of the first stack limit enable bit, execute the procedure entry instruction associated with the first thread without checking the stack limit value; an exception handler configured to handle the stack limit exception by moving the stack from a first memory location associated with the first predefined stack region size to a second memory location associated with a second predefined stack region size greater than the first predefined stack region size and to reset the value of the first stack limit enable bit to indicate the second state of the first stack limit enable bit upon moving the stack from the first memory location to the second memory location.