fork download
  1. #define ALIAS(f) __attribute__ ((alias (#f)))
  2.  
  3. static const uint32_t* APPLICATION_BINARY_ADDRESS_SLOT = (uint32_t*)0x3FC00;
  4. static uint32_t app_start = 0;
  5.  
  6. void BranchIntHandler(void)
  7. {
  8. __asm volatile
  9. (
  10. "MRS R0, PSR;\t\n"
  11. "MOV R1, #0x3F;\t\n"
  12. "AND R0, R1;\t\n"
  13. "LSL R0, R0, #2;\t\n"
  14. "LDR R2, [%0];\t\n"
  15. "LDR R0, [R0, R2];\t\n"
  16. "BX R0;\t\n"
  17. :
  18. : "r" (&app_start) //%0 will have app_start address
  19. );
  20. }
  21.  
  22. void NMI_Handler(void) ALIAS(BranchIntHandler);
  23. void HardFault_Handler(void) ALIAS(BranchIntHandler);
  24. void SVC_Handler(void) ALIAS(BranchIntHandler);
  25. void PendSV_Handler(void) ALIAS(BranchIntHandler);
  26. void SysTick_Handler(void) ALIAS(BranchIntHandler);
  27. void POWER_CLOCK_IRQHandler(void) ALIAS(BranchIntHandler);
  28. void RADIO_IRQHandler(void) ALIAS(BranchIntHandler);
  29.  
  30. void SPI0_TWI0_IRQHandler(void) ALIAS(BranchIntHandler);
  31. void SPI1_TWI1_IRQHandler(void) ALIAS(BranchIntHandler);
  32.  
  33. void ADC_IRQHandler(void) ALIAS(BranchIntHandler);
  34. void RTC0_IRQHandler(void) ALIAS(BranchIntHandler);
  35. void TIMER0_IRQHandler(void) ALIAS(BranchIntHandler);
  36. void TIMER1_IRQHandler(void) ALIAS(BranchIntHandler);
  37. void TIMER2_IRQHandler(void) ALIAS(BranchIntHandler);
  38. void TEMP_IRQHandler(void) ALIAS(BranchIntHandler);
  39. void RNG_IRQHandler(void) ALIAS(BranchIntHandler);
  40. void ECB_IRQHandler(void) ALIAS(BranchIntHandler);
  41. void CCM_AAR_IRQHandler(void) ALIAS(BranchIntHandler);
  42. void WDT_IRQHandler(void) ALIAS(BranchIntHandler);
  43.  
  44. void QDEC_IRQHandler(void) ALIAS(BranchIntHandler);
  45. void LPCOMP_COMP_IRQHandler(void) ALIAS(BranchIntHandler);
  46.  
  47. void SWI1_IRQHandler(void) ALIAS(BranchIntHandler);
  48. void SWI2_IRQHandler(void) ALIAS(BranchIntHandler);
  49. void SWI3_IRQHandler(void) ALIAS(BranchIntHandler);
  50. void SWI4_IRQHandler(void) ALIAS(BranchIntHandler);
  51. void SWI5_IRQHandler(void) ALIAS(BranchIntHandler);
  52.  
  53. void UART0_IRQHandler(void) ALIAS(BranchIntHandler);
  54. void RTC1_IRQHandler(void) ALIAS(BranchIntHandler);
  55. void GPIOTE_IRQHandler(void) ALIAS(BranchIntHandler);
  56. void SWI0_IRQHandler(void) ALIAS(BranchIntHandler);
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:3:14: error: unknown type name 'uint32_t'
 static const uint32_t* APPLICATION_BINARY_ADDRESS_SLOT = (uint32_t*)0x3FC00;
              ^
prog.c:3:59: error: 'uint32_t' undeclared here (not in a function)
 static const uint32_t* APPLICATION_BINARY_ADDRESS_SLOT = (uint32_t*)0x3FC00;
                                                           ^
prog.c:3:68: error: expected expression before ')' token
 static const uint32_t* APPLICATION_BINARY_ADDRESS_SLOT = (uint32_t*)0x3FC00;
                                                                    ^
prog.c:4:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'app_start'
 static uint32_t app_start = 0;
                 ^
prog.c: In function 'BranchIntHandler':
prog.c:18:11: error: 'app_start' undeclared (first use in this function)
   : "r" (&app_start)  //%0 will have app_start address
           ^
prog.c:18:11: note: each undeclared identifier is reported only once for each function it appears in
prog.c: At top level:
prog.c:3:24: warning: 'APPLICATION_BINARY_ADDRESS_SLOT' defined but not used [-Wunused-variable]
 static const uint32_t* APPLICATION_BINARY_ADDRESS_SLOT = (uint32_t*)0x3FC00;
                        ^
stdout
Standard output is empty