Compare commits
3 Commits
2faad79559
...
4f55d765b4
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f55d765b4 | |||
| ec732d4627 | |||
| 3f3795df3c |
@ -66,7 +66,9 @@
|
||||
_push_regs
|
||||
cld
|
||||
movq %rsp, %rdi
|
||||
sub $0x8, %rsp
|
||||
call intr_handleintr
|
||||
add $0x8, %rsp
|
||||
_pop_regs
|
||||
add $0x10, %rsp
|
||||
iretq
|
||||
|
||||
@ -2,10 +2,7 @@
|
||||
|
||||
.global proc_switch
|
||||
proc_switch:
|
||||
testq %rsi, %rsi
|
||||
je 1f
|
||||
movq %rsi, %cr3
|
||||
1:
|
||||
mov %rdi, %rsp
|
||||
_pop_regs
|
||||
add $0x10, %rsp
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
|
||||
#define SPINLOCK_HINT() asm volatile("pause")
|
||||
|
||||
struct {
|
||||
uint64_t irq_flags;
|
||||
static struct {
|
||||
volatile uint64_t irq_flags;
|
||||
atomic_int irq_nest;
|
||||
} IRQ_CTX = {0};
|
||||
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
#include <umalloc/umalloc.h>
|
||||
|
||||
extern void main(void);
|
||||
extern uint8_t _bss_start[];
|
||||
extern uint8_t _bss_end[];
|
||||
extern volatile uint8_t _bss_start[];
|
||||
extern volatile uint8_t _bss_end[];
|
||||
|
||||
void clearbss(void) {
|
||||
uint8_t *p = _bss_start;
|
||||
@ -20,7 +20,7 @@ void clearbss(void) {
|
||||
}
|
||||
|
||||
#define MAX_ARGS 25
|
||||
static char *_args[MAX_ARGS];
|
||||
static volatile char *_args[MAX_ARGS];
|
||||
|
||||
size_t _argslen;
|
||||
|
||||
@ -40,7 +40,7 @@ void _premain(void) {
|
||||
_args[i] = umalloc(PROC_ARG_MAX);
|
||||
}
|
||||
|
||||
proc_argv(-1, &_argslen, _args, MAX_ARGS);
|
||||
proc_argv(-1, &_argslen, (char **)_args, MAX_ARGS);
|
||||
|
||||
main();
|
||||
proc_kill(proc_getpid());
|
||||
|
||||
@ -4,4 +4,9 @@
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
xor %rbp, %rbp
|
||||
mov %rsp, %rbp
|
||||
and $-0x10, %rsp
|
||||
sub $0x8, %rsp
|
||||
|
||||
call _premain
|
||||
|
||||
Reference in New Issue
Block a user