I understand that when we want to make a system call, we generally call a C wrapper around that system call which internally puts arguments in the right places (in specific registers or stack sometimes).
After putting arguments (and ignoring approaches like syscall instruction as it not available on all platforms), wrapper generally executes int 0x80 (software interrupt).
Now, when an interrupt is encountered hardware will save all the registers of the running process on its stack and make context switch (which will include switching program counter and stack pointer among other things).
I am having trouble understanding how then system call handler access the arguments that were originally set by C wrapper in specific registers and which now reside in the user process stack (not in kernel process stack)