Hello, and welcome to the forum.
I assume that Cpu_WaitInterrupt() is either a macro or a function that contains the WAIT instruction, and little else. Maybe __asm wait;
When wakeup from wait mode occurs, the MCU will firstly execute the ISR code associated with the peripheral that caused wakeup, followed by any other interrupts that may be pending when the first ISR exits. Execution of the main loop will then continue, starting with the assembly instruction immediately following the wait instruction.
If the code following Cpu_WaitInterrupt() is being executed, wait mode is obvioulsy being exited. If not due to one of the interrupt sources, it may occur due to the debugger causing the MCU to enter active background mode.
If you require wakeup from a specific interrupt source, the other potential interrupt sources must be disabled.
Regards,
Mac