Refactored the GCC C-Stack functions into their own file.

This commit is contained in:
skarg
2009-05-12 20:41:42 +00:00
parent 9235ebeee2
commit 30c01de3a4
6 changed files with 149 additions and 66 deletions
-28
View File
@@ -139,34 +139,6 @@ static void input_switch_read(
}
}
/* stack checking */
#if defined(__GNUC__)
extern uint8_t _end;
extern uint8_t __stack;
#define STACK_CANARY (0xC5)
void StackPaint(
void) __attribute__ ((naked)) __attribute__ ((section(".init1")));
void StackPaint(
void)
{
#if 0
uint8_t *p = &_end;
while (p <= &__stack) {
*p = STACK_CANARY;
p++;
}
#else
__asm volatile (
" ldi r30,lo8(_end)\n" " ldi r31,hi8(_end)\n" " ldi r24,lo8(0xc5)\n" /* STACK_CANARY = 0xc5 */
" ldi r25,hi8(__stack)\n" " rjmp .cmp\n" ".loop:\n"
" st Z+,r24\n" ".cmp:\n" " cpi r30,lo8(__stack)\n"
" cpc r31,r25\n" " brlo .loop\n" " breq .loop"::);
#endif
}
#endif
static uint8_t PDUBuffer[MAX_MPDU];
int main(
void)