Como vocês viram na teoria, cada thread tem uma pilha de execução separada, sendo essa uma das características que a diferenciam de um processo convencional.
Alguns alunos que olharam as chamadas do_fork() e sys_clone() perceberam que são passados nos registradores da chamada de sistema, ponteiros para a pilha de execução.
Perceberam também que apenas escrevendo "thread" no arquivo ifs_fork, não há como passar a pilha de execução para o kernel. (Na verdade há, mas é preciso supor algumas coisa).
A resposta é que, como todos os processos criados vão simplesmente rodar em um loop infinito, não há a necessidade de criação de uma nova pilha de execução. Isso quer dizer que vocês podem usar regs.esp para a obtenção da pilha.