diff options
Diffstat (limited to 'sys/include')
-rw-r--r-- | sys/include/arch/aarch64/cpu.h | 2 | ||||
-rw-r--r-- | sys/include/arch/amd64/cpu.h | 1 | ||||
-rw-r--r-- | sys/include/arch/amd64/frameasm.h | 8 | ||||
-rw-r--r-- | sys/include/dev/cons/consvar.h | 2 | ||||
-rw-r--r-- | sys/include/sys/sched.h | 2 |
5 files changed, 13 insertions, 2 deletions
diff --git a/sys/include/arch/aarch64/cpu.h b/sys/include/arch/aarch64/cpu.h index a6ccdec..2f62d95 100644 --- a/sys/include/arch/aarch64/cpu.h +++ b/sys/include/arch/aarch64/cpu.h @@ -40,6 +40,8 @@ struct cpu_info { }; void cpu_startup(struct cpu_info *ci); +void cpu_halt_others(void); + void mp_bootstrap_aps(struct cpu_info *ci); struct cpu_info *this_cpu(void); diff --git a/sys/include/arch/amd64/cpu.h b/sys/include/arch/amd64/cpu.h index ce42416..dd753b7 100644 --- a/sys/include/arch/amd64/cpu.h +++ b/sys/include/arch/amd64/cpu.h @@ -49,6 +49,7 @@ struct cpu_info { }; __dead void cpu_halt_all(void); +void cpu_halt_others(void); void cpu_startup(struct cpu_info *ci); struct cpu_info *this_cpu(void); diff --git a/sys/include/arch/amd64/frameasm.h b/sys/include/arch/amd64/frameasm.h index 22217eb..c6316a5 100644 --- a/sys/include/arch/amd64/frameasm.h +++ b/sys/include/arch/amd64/frameasm.h @@ -121,6 +121,7 @@ */ #define TRAPENTRY_EC(ENTLABEL, TRAPNO) \ ENTLABEL: ; \ + cli ; \ testq $0x3, 16(%rsp) ; \ jz 1f ; \ lfence ; \ @@ -133,7 +134,8 @@ jz 2f ; \ lfence ; \ swapgs ; \ - 2: iretq + 2: sti ; \ + iretq /* * Trap entry where no error code is on @@ -141,6 +143,7 @@ */ #define TRAPENTRY(ENTLABEL, TRAPNO) \ ENTLABEL: ; \ + cli ; \ testq $0x3, 8(%rsp) ; \ jz 1f ; \ lfence ; \ @@ -153,6 +156,7 @@ jz 2f ; \ lfence ; \ swapgs ; \ - 2: iretq + 2: sti ; \ + iretq #endif /* !_MACHINE_FRAMEASM_H_ */ diff --git a/sys/include/dev/cons/consvar.h b/sys/include/dev/cons/consvar.h index 483d5f1..253176b 100644 --- a/sys/include/dev/cons/consvar.h +++ b/sys/include/dev/cons/consvar.h @@ -32,6 +32,7 @@ #include <sys/types.h> #include <sys/param.h> +#include <sys/spinlock.h> /* Buffer types */ #define CONS_BUF_INPUT 0 @@ -62,6 +63,7 @@ struct cons_input { * keyboard input or console output. */ struct cons_buf { + struct spinlock lock; union { struct cons_input *ibuf; struct cons_char *obuf; diff --git a/sys/include/sys/sched.h b/sys/include/sys/sched.h index 7f5e65f..80f4d1c 100644 --- a/sys/include/sys/sched.h +++ b/sys/include/sys/sched.h @@ -37,6 +37,8 @@ void sched_init(void); void sched_yield(void); +void sched_detach(struct proc *td); + __dead void sched_enter(void); void sched_enqueue_td(struct proc *td); |