Esempio n. 1
0
File: arch.c Progetto: M1cha/lk
void arm_cm_irq_exit(bool reschedule)
{
	if (reschedule)
		arm_cm_trigger_preempt();

	KEVLOG_IRQ_EXIT(__get_IPSR());
	dec_critical_section();
}
Esempio n. 2
0
void sam3_uart_irq(void)
{
	inc_critical_section();

	unsigned char c;
	if (uart_read(UART, &c) == 0) {
		cbuf_write(&debug_rx_buf, &c, 1, false);
		cm3_trigger_preempt();
	}

	dec_critical_section();
}
Esempio n. 3
0
/* use systick as the kernel tick */
void _systick(void)
{
	inc_critical_section();

	bool resched = false;
	ticks += 10;
	if (cb) {
		if (cb(cb_args, ticks) == INT_RESCHEDULE)
			resched = true;
	}

	if (resched) {
		// have the cortex-m3 queue a preemption
		cm3_trigger_preempt();
	}

	dec_critical_section();
}