I'm curious if there are any particular wins for using a call instead of a goto when checking each interrupt source in an ISR. My current code would do something like this:
.intr CODE 4
pagesel $
btfsc INTCON, TMR0IF ; Timer0
goto Timer0_Entry
banksel PIR1 ; Bank #0
btfsc PIR1, SSP1IF
goto I2C_Entry ; I2C Peripheral
...
but that is on a enhanced midrange pic16 where the context save is done for you. If I was on a PIC16F88 say, there would be a (minor) win for avoiding the whole tedious context save in a situation where two simulataneous interrupt sources were pending.
Doing it with gotos implicitly creates a priority list which can stall other sources - if I had multiple interrupts from one source, that source would stall the other irq sources until it stopped. I hit that once by forgetting that the serial port irq flag is asserted by default.
But other than that, is it just a question of taste? The hit you take (in a multiple irq situation) by doing a retfie and then heading back into the ISR immediately doesn't particularly severe.