stm32: Move rdi handling to common stm32 code.
This commit is contained in:
parent
98ab873784
commit
ce1ef6e41b
@ -304,57 +304,3 @@ static void setup_vbus_irq(void)
|
|||||||
|
|
||||||
exti15_10_isr();
|
exti15_10_isr();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_DEBUG
|
|
||||||
enum {
|
|
||||||
RDI_SYS_OPEN = 0x01,
|
|
||||||
RDI_SYS_WRITE = 0x05,
|
|
||||||
RDI_SYS_ISTTY = 0x09,
|
|
||||||
};
|
|
||||||
|
|
||||||
int rdi_write(int fn, const char *buf, size_t len)
|
|
||||||
{
|
|
||||||
(void)fn;
|
|
||||||
if (debug_bmp)
|
|
||||||
return len - usbuart_debug_write(buf, len);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ex_frame {
|
|
||||||
union {
|
|
||||||
int syscall;
|
|
||||||
int retval;
|
|
||||||
};
|
|
||||||
const int *params;
|
|
||||||
uint32_t r2, r3, r12, lr, pc;
|
|
||||||
};
|
|
||||||
|
|
||||||
void debug_monitor_handler_c(struct ex_frame *sp)
|
|
||||||
{
|
|
||||||
/* Return to after breakpoint instruction */
|
|
||||||
sp->pc += 2;
|
|
||||||
|
|
||||||
switch (sp->syscall) {
|
|
||||||
case RDI_SYS_OPEN:
|
|
||||||
sp->retval = 1;
|
|
||||||
break;
|
|
||||||
case RDI_SYS_WRITE:
|
|
||||||
sp->retval = rdi_write(sp->params[0], (void*)sp->params[1], sp->params[2]);
|
|
||||||
break;
|
|
||||||
case RDI_SYS_ISTTY:
|
|
||||||
sp->retval = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sp->retval = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
asm(".globl debug_monitor_handler\n"
|
|
||||||
".thumb_func\n"
|
|
||||||
"debug_monitor_handler: \n"
|
|
||||||
" mov r0, sp\n"
|
|
||||||
" b debug_monitor_handler_c\n");
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -250,3 +250,57 @@ void USBUSART_TIM_ISR(void)
|
|||||||
/* process FIFO */
|
/* process FIFO */
|
||||||
usbuart_run();
|
usbuart_run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_DEBUG
|
||||||
|
enum {
|
||||||
|
RDI_SYS_OPEN = 0x01,
|
||||||
|
RDI_SYS_WRITE = 0x05,
|
||||||
|
RDI_SYS_ISTTY = 0x09,
|
||||||
|
};
|
||||||
|
|
||||||
|
int rdi_write(int fn, const char *buf, size_t len)
|
||||||
|
{
|
||||||
|
(void)fn;
|
||||||
|
if (debug_bmp)
|
||||||
|
return len - usbuart_debug_write(buf, len);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ex_frame {
|
||||||
|
union {
|
||||||
|
int syscall;
|
||||||
|
int retval;
|
||||||
|
};
|
||||||
|
const int *params;
|
||||||
|
uint32_t r2, r3, r12, lr, pc;
|
||||||
|
};
|
||||||
|
|
||||||
|
void debug_monitor_handler_c(struct ex_frame *sp)
|
||||||
|
{
|
||||||
|
/* Return to after breakpoint instruction */
|
||||||
|
sp->pc += 2;
|
||||||
|
|
||||||
|
switch (sp->syscall) {
|
||||||
|
case RDI_SYS_OPEN:
|
||||||
|
sp->retval = 1;
|
||||||
|
break;
|
||||||
|
case RDI_SYS_WRITE:
|
||||||
|
sp->retval = rdi_write(sp->params[0], (void*)sp->params[1], sp->params[2]);
|
||||||
|
break;
|
||||||
|
case RDI_SYS_ISTTY:
|
||||||
|
sp->retval = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sp->retval = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
asm(".globl debug_monitor_handler\n"
|
||||||
|
".thumb_func\n"
|
||||||
|
"debug_monitor_handler: \n"
|
||||||
|
" mov r0, sp\n"
|
||||||
|
" b debug_monitor_handler_c\n");
|
||||||
|
|
||||||
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user