Lack of Stack Pointer Register
Using a stack for function calls does not require any special support from the processor. It's up to the compiler to decide where to put the data relative to a function call (return address, parameters, possibly reserved space for the return value). A common convention is to designate one particular register as the stack pointer. This does not require any special processor instruction, it can be a general-purpose register. A function call looks like this:


Write parameters to the memory region at address SP (stack pointer register)
Decrease SP by the size of the parameters
Write PC (program counter register) to the address SP
Decrease SP by the size of PC
Jump to the function entry point


Returning from the function looks like this:


Load a PC-sized value from SP into a register A
Increase SP by the size of PC
Jump to A


Some processors have a particular register R with instructions to store a word in memory at the address designated by R and decrement R, and to load a word in memory at the address designated by R and increment R. In this case, the processor documentation typically describes R as the stack pointer register and compilers use it to store the address of the function call stack. But if the processor doesn't have such instructions, the compiler just emits separate instructions for load/store and for increment/decrement. The register doesn't need any special properties.