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.