generic: Move simulator/irq.h to new file generic/irq.h

Move the generic irq definitions into generic/irq.h and move the
simulator irq code into main.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2016-06-05 15:07:57 -04:00
parent 9f8817a47e
commit 73f3b0636a
4 changed files with 46 additions and 34 deletions

11
src/generic/irq.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef __GENERIC_IRQ_H
#define __GENERIC_IRQ_H
#include <stdint.h>
void irq_disable(void);
void irq_enable(void);
uint8_t irq_save(void);
void irq_restore(uint8_t flag);
#endif // irq.h

View File

@ -1,7 +1,7 @@
#ifndef __SIMU_PGM_H
#define __SIMU_PGM_H
#ifndef __GENERIC_PGM_H
#define __GENERIC_PGM_H
// This header provides wrappers for the AVR specific "PROGMEM"
// declarations.
// declarations on non-avr platforms.
#define PROGMEM
#define PSTR(S) S

View File

@ -1,31 +0,0 @@
#ifndef __SIMU_IRQ_H
#define __SIMU_IRQ_H
// Definitions for irq enable/disable on host simulator
#include <stdint.h>
#include "compiler.h" // barrier
extern uint8_t Interrupt_off;
static inline void irq_disable(void) {
Interrupt_off = 1;
barrier();
}
static inline void irq_enable(void) {
barrier();
Interrupt_off = 0;
}
static inline uint8_t irq_save(void) {
uint8_t flag = Interrupt_off;
irq_disable();
return flag;
}
static inline void irq_restore(uint8_t flag) {
barrier();
Interrupt_off = flag;
}
#endif // irq.h

View File

@ -7,10 +7,42 @@
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include "board/misc.h" // timer_from_us
#include "board/irq.h" // irq_disable
#include "sched.h" // sched_main
/****************************************************************
* Interrupts
****************************************************************/
uint8_t Interrupt_off;
void irq_disable(void)
{
Interrupt_off = 1;
barrier();
}
void irq_enable(void)
{
barrier();
Interrupt_off = 0;
}
uint8_t irq_save(void)
{
uint8_t flag = Interrupt_off;
irq_disable();
return flag;
}
void irq_restore(uint8_t flag)
{
barrier();
Interrupt_off = flag;
}
/****************************************************************
* Timers