Here is what I ended up doing, although modifying the SDK code isn't desirable.
I have my project specific interrupt handlers defined in a local header file. For the Card Detect handler included in the SDK, I had to comment out the provided code and create a separate function that I call from my own handler.
#ifdef __cplusplus
extern "C"
{
#endif
void GPIO1_Combined_0_15_IRQHandler()
{
if (GPIO_PortGetInterruptFlags(GPIO1) & (1U << ENCODER0_GPIO_PIN_A))
{
GPIO_PortClearInterruptFlags(GPIO1, 1U << ENCODER0_GPIO_PIN_A);
}
else if (SDMMCHOST_CARD_DETECT_GPIO_INTERRUPT_STATUS() & (1U << BOARD_USDHC_CD_GPIO_PIN))
{
CD_Handler();
}
}
#ifdef __cplusplus
}
#endif
Here is the modified handler I put in the SDK:
void CD_Handler(void)
{
SDMMCHOST_NofiyCardInsertStatus((SDMMCHOST_CARD_DETECT_GPIO_STATUS() == SDMMCHOST_CARD_INSERT_CD_LEVEL), ((sdmmhostcard_usr_param_t*) s_usdhcHandle.userData)->cd);
SDMMCHOST_CARD_DETECT_GPIO_INTERRUPT_STATUS_CLEAR(~0U);
SDMMCEVENT_Notify(kSDMMCEVENT_CardDetect);
}