blob: 1bff8d63be9aa554a38725ed5508b7305e95fed2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#ifndef DEMO_H
#define DEMO_H
#define NUM_CPUS 4
struct lock
{
volatile unsigned val;
};
struct cpu
{
unsigned num;
};
/* R12 está reservado por la ABI
* https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html
*/
register struct cpu *this_cpu asm("ip");
void spin_init(struct lock *lock);
void spin_lock(struct lock *lock, unsigned *irq_save);
void spin_unlock(struct lock *lock, unsigned irq_save);
void console_init(void);
void print(const char *fmt, ...);
int cpus_ready(void);
void run_cpu(unsigned num);
void run_cpus(unsigned mask);
void halt_cpu(unsigned num);
void halt_cpus(unsigned mask);
#endif
|