Ok, so I discovered the two things that were the root of my issue that were not entirely intuitive to me at first, so hopefully this post helps others too. I was originally circling around the LLWU setup code (llwu_configure()) and the NVIC setup code, and all of that code was working fine.
The two things I had to do were:
1) I had to add/enable the following code in my sysinit routine: (This was the most crucial part and must be added *before* initializing the PLL clock)
// Release hold with ACKISO: Only has an effect if recovering from VLLS1, VLLS2, or VLLS3
// if ACKISO is set you must clear ackiso before calling pll_init
// or pll init hangs waiting for OSC to initialize
// if osc enabled in low power modes - enable it first before ack
// if I/O needs to be maintained without glitches enable outputs and modules first before ack.
if (PMC_REGSC & PMC_REGSC_ACKISO_MASK)
PMC_REGSC |= PMC_REGSC_ACKISO_MASK;
2) I had to keep the debug connection active. Otherwise, the only way I could wakeup from VLLSx was through run mode. I.e., stop the debugger, unplug the OpenSDA usb cable and replug it back. To keep the debug connection active, here are the steps I followed, for those who may be interested:
[CodeWarrior]
- Go into the debug configuration....
- Under the CodeWarrior Download --> [Your Project] FLASH
- Next to the [Your Project]_FLASH_OpenSDA connection dropdown box, click Edit...
- Click on the Advanced tab
- Most likely, the default is "Terminate the debug session(s)". Change it to "Try to reconnect" and specify a desired timeout, if any.

[IAR]
[Not sure how to do this same kind of thing in IAR...]
-Rich