diff options
Diffstat (limited to 'src/cpu')
| -rw-r--r-- | src/cpu/atomic/swap.h | 6 | ||||
| -rw-r--r-- | src/cpu/irq.c | 9 | ||||
| -rw-r--r-- | src/cpu/irq.h | 12 | 
3 files changed, 16 insertions, 11 deletions
| diff --git a/src/cpu/atomic/swap.h b/src/cpu/atomic/swap.h index 374dd97..3584d4e 100644 --- a/src/cpu/atomic/swap.h +++ b/src/cpu/atomic/swap.h @@ -8,7 +8,8 @@  /// https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html  /// https://developer.arm.com/documentation/dht0008/a/arm-synchronization-primitives/practical-uses/implementing-a-semaphore?lang=en -static inline void atm_lock(unsigned long pid, unsigned long* addr) { +static inline void atm_lock(unsigned long pid, unsigned long* addr) +{  	unsigned long tmp, current_lock_value;  	asm volatile(  "1:	ldrex	%0, [%3]\n" @@ -23,7 +24,8 @@ static inline void atm_lock(unsigned long pid, unsigned long* addr) {  	: "cc");  } -static inline void atm_release(unsigned long* addr) { +static inline void atm_release(unsigned long* addr) +{  	unsigned long cleared = NULL_PID;  	asm volatile(  "	dmb\n" diff --git a/src/cpu/irq.c b/src/cpu/irq.c index f2b326e..1654828 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -8,10 +8,9 @@  extern unsigned long cmdidx;  extern char cmd[2048]; -extern void disable_irq(void); -extern void enable_irq(void); -void c_irq_handler(void) { +void c_irq_handler(void) +{  	disableirq();  	unsigned long source = load32(CORE0_IRQ_SOURCE);  	if (source & (1 << 8)) { @@ -56,12 +55,12 @@ void c_irq_handler(void) {  						} else if (data == 0x6C) {  							cmd[off] = (char) data;  							off += 1; -							lock_mutex(&exe_cnt_m, SCHED_PID); +							lock_mutex(&exe_cnt_m, SYS_PID);  						// Release Case  						} else if (data == 0x72) {  							cmd[off] = (char) data;  							off += 1; -							release_mutex(&exe_cnt_m, SCHED_PID); +							release_mutex(&exe_cnt_m, SYS_PID);  						// Else output  						} else {  							cmd[off] = (char) data; diff --git a/src/cpu/irq.h b/src/cpu/irq.h index 971d0b9..3b8f085 100644 --- a/src/cpu/irq.h +++ b/src/cpu/irq.h @@ -1,16 +1,20 @@  #ifndef CPU_IRQ_H  #define CPU_IRQ_H -static inline void enableirq() { +static inline void enableirq(void) +{  	asm volatile("cpsie i");  } -static inline void disableirq() { +static inline void disableirq(void) +{  	asm volatile("cpsid i");  } -static inline void enablefiq() { +static inline void enablefiq(void) +{  	asm volatile("cpsie f");  } -static inline void disablefiq() { +static inline void disablefiq(void) +{  	asm volatile("cpsid f");  } | 
