]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - tmk_core/tool/chibios/ch-bootloader-jump.patch
Move AVR specific sleep_led.c into avr.
[max/tmk_keyboard.git] / tmk_core / tool / chibios / ch-bootloader-jump.patch
1 diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
2 index 38b4513..12a3f39 100644
3 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
4 +++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
5 @@ -98,6 +98,13 @@
6  #define CRT0_CALL_DESTRUCTORS               TRUE\r
7  #endif\r
8  \r
9 +/**\r
10 + * @brief   Magic number for jumping to bootloader.\r
11 + */\r
12 +#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)\r
13 +#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF\r
14 +#endif\r
15 +\r
16  /*===========================================================================*/\r
17  /* Code section.                                                             */\r
18  /*===========================================================================*/\r
19 @@ -117,6 +124,17 @@
20                  .thumb_func\r
21                  .global Reset_Handler\r
22  Reset_Handler:\r
23 +\r
24 +#ifdef BOOTLOADER_ADDRESS\r
25 +                /* jump to bootloader code */\r
26 +                ldr        r0, =__ram0_end__-4\r
27 +                ldr        r1, =MAGIC_BOOTLOADER_NUMBER\r
28 +                ldr        r2, [r0, #0]\r
29 +                str        r0, [r0, #0] /* erase stored magic */\r
30 +                cmp        r2, r1\r
31 +                beq        Bootloader_Jump\r
32 +#endif /* BOOTLOADER_ADDRESS */\r
33 +\r
34                  /* Interrupts are globally masked initially.*/\r
35                  cpsid   i\r
36  \r
37 @@ -230,6 +248,21 @@ endfiniloop:
38                  ldr     r1, =__default_exit\r
39                  bx      r1\r
40  \r
41 +#ifdef BOOTLOADER_ADDRESS\r
42 +/*\r
43 + * Jump-to-bootloader function.\r
44 + */\r
45 +\r
46 +                .align  2\r
47 +                .thumb_func\r
48 +Bootloader_Jump:\r
49 +                ldr     r0, =BOOTLOADER_ADDRESS\r
50 +                ldr     r1, [r0, #0]\r
51 +                mov     sp, r1\r
52 +                ldr     r0, [r0, #4]\r
53 +                bx      r0\r
54 +#endif /* BOOTLOADER_ADDRESS */\r
55 +\r
56  #endif\r
57  \r
58  /** @} */\r
59 diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
60 index fcfa4de..2d560da 100644
61 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
62 +++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
63 @@ -133,6 +133,13 @@
64  #define CRT0_CPACR_INIT                     0x00F00000\r
65  #endif\r
66  \r
67 +/**\r
68 + * @brief   Magic number for jumping to bootloader.\r
69 + */\r
70 +#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)\r
71 +#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF\r
72 +#endif\r
73 +\r
74  /*===========================================================================*/\r
75  /* Code section.                                                             */\r
76  /*===========================================================================*/\r
77 @@ -157,6 +164,16 @@
78                  .thumb_func\r
79                  .global Reset_Handler\r
80  Reset_Handler:\r
81 +#ifdef BOOTLOADER_ADDRESS\r
82 +                /* jump to bootloader code */\r
83 +                ldr        r0, =__ram0_end__-4\r
84 +                ldr        r1, =MAGIC_BOOTLOADER_NUMBER\r
85 +                ldr        r2, [r0, #0]\r
86 +                str        r0, [r0, #0] /* erase stored magic */\r
87 +                cmp        r2, r1\r
88 +                beq        Bootloader_Jump\r
89 +#endif /* BOOTLOADER_ADDRESS */\r
90 +\r
91                  /* Interrupts are globally masked initially.*/\r
92                  cpsid   i\r
93  \r
94 @@ -289,6 +306,21 @@ endfiniloop:
95                  /* Branching to the defined exit handler.*/\r
96                  b       __default_exit\r
97  \r
98 +#ifdef BOOTLOADER_ADDRESS\r
99 +/*\r
100 + * Jump-to-bootloader function.\r
101 + */\r
102 +\r
103 +                .align  2\r
104 +                .thumb_func\r
105 +Bootloader_Jump:\r
106 +                ldr     r0, =BOOTLOADER_ADDRESS\r
107 +                ldr     r1, [r0, #0]\r
108 +                mov     sp, r1\r
109 +                ldr     r0, [r0, #4]\r
110 +                bx      r0\r
111 +#endif /* BOOTLOADER_ADDRESS */\r
112 +\r
113  #endif /* !defined(__DOXYGEN__) */\r
114  \r
115  /** @} */\r