Just a note: in x86, there are many kinds of "jmp" instructions. The most common one is the "local" jmp, which simply changes the value of EIP register, so stack frame isn't touched at all, as Carl pointed out. I assume you are talking about this type of jmp, since it's the one the assemblers generate with a syntax like:
jmp label
...
label:
But there is also the "far" jump, which affects also the CS segment register. If the processor is in real mode, it's still nothing but a change in CS:IP registers (just a "larger" jump), but in protected mode the CS segments has a very different and much more complex function: it's interpreted as a descriptor to CALL/TASK/INTERRUPT gates, i.e. an index in a descriptor table which defines many things like the privilege level, task... Depending on the specific descriptor, a privilege level escalation may happen, or also an "hardware task" switch. This may produce a context change. You won't usually find far jumps in protected mode, unless you are programming the core of an operating system. Creating segment descriptors is almost always a kernel's job.
Regards