This depends entirely on the VM.
The JVM has a single stack for everything. (More precisely: a single stack per thread for everything.)
The Dalvik VM is register-based, it only has a call stack, all data is held in registers.
The Parrot VM has no stack at all: it is register-based, i.e. all data is held in registers, and its control flow is based on continuations, so it doesn't have a call stack either.
There are also VMs which conceptually have a stack but actually allocate all stackframes as regular objects on the heap. So, from the point of the instruction set, there is a stack, but in the actual implementation, there isn't. (The JVM specification, for example, allows this. There is nothing in there, which forces you to have a single contiguous area of memory for your stack. In fact, the spec explicitly mentions that they do not specify such level of detail and even mentions allocating stack frames on the heap as an example.)
Many Smalltalk and Lisp VMs have a "spaghetti stack", which is required to support call/cc
, since this can conceptually "fork" the call stack.
Forth has two stacks: a return address stack for control flow and a data stack. Both stacks can be freely manipulated by the programmer.