You can do it with sigaltstack
.
stack_t stack = {
.ss_sp = malloc(SIGSTKSZ),
.ss_size = SIGSTKSZ,
.ss_flags = 0
};
if (sigaltstack(&stack, NULL))
perror("sigaltstack");
At this point just establish your signal handler with sigaction
and use sa_flags = SA_ONSTACK
.