Allocate the stack with uncommited guard pages on either side, if any faulting accesses to these occur then the call-ret SP value is reset to the default and execution resumed.