1 /*
2    bug3410620.c
3    bank: 1, 2
4 */
5 
6 #include <testfwk.h>
7 
8 #define INTREGBANK {bank}
9 
10 #if defined(__SDCC_mcs51) || defined (__SDCC_ds390)
11 
handler1(void)12 void handler1(void) __using(INTREGBANK)
13 {
14 }
15 
16 typedef void (*phandler_t)(void) __using(INTREGBANK);
17 phandler_t phandlers[8] = {handler1};
18 
19 volatile unsigned char GetInterruptSource; //some dummy for real hardware
20 
21 /* No need to call this, threw
22    warning 139: call via function pointer in ISR using non-zero register bank.
23    Cannot determine which register bank to save.*/
Int0_isr(void)24 void Int0_isr(void) __interrupt(0) __using(1)
25 {
26 	unsigned char intsrc;
27 	intsrc = GetInterruptSource;
28 	phandlers[intsrc](); // warning 139 refers to this line
29 }
30 
31 #endif
32 
testBug(void)33 void testBug(void)
34 {
35 	ASSERT (1);
36 }
37