Browse Source

Avoid stack overflow with -msoft-float

pull/12/head
Andrew Waterman 11 years ago
parent
commit
39f189549b
  1. 4
      pk/fp_asm.S
  2. 4
      pk/init.c
  3. 3
      pk/minit.c
  4. 2
      pk/pk.h

4
pk/fp_asm.S

@ -1,5 +1,7 @@
// See LICENSE for license details.
#ifdef __riscv_hard_float
#define get_f32(which) fmv.x.s a0, which; jr t0
#define put_f32(which) fmv.s.x which, a0; jr t0
#ifdef __riscv64
@ -153,3 +155,5 @@
put_f64(f29)
put_f64(f30)
put_f64(f31)
#endif

4
pk/init.c

@ -84,7 +84,7 @@ struct mainvars* parse_args(struct mainvars* args)
return (struct mainvars*)&args->argv[a0-1];
}
void boot_loader(struct mainvars* args)
void load_program(struct mainvars* args)
{
// load program named by argv[0]
long phdrs[128];
@ -93,6 +93,4 @@ void boot_loader(struct mainvars* args)
if (!args->argc)
panic("tell me what ELF to load!");
load_elf((char*)(uintptr_t)args->argv[0], &current);
run_loaded_program(args);
}

3
pk/minit.c

@ -67,7 +67,8 @@ static void init_first_hart()
memory_init();
vm_init();
boot_loader(args);
load_program(args);
run_loaded_program(args);
}
static void init_other_hart()

2
pk/pk.h

@ -60,7 +60,7 @@ void handle_misaligned_load(trapframe_t*);
void handle_misaligned_store(trapframe_t*);
void handle_fault_load(trapframe_t*);
void handle_fault_store(trapframe_t*);
void boot_loader(struct mainvars*);
void load_program(struct mainvars*);
void run_loaded_program(struct mainvars*);
void boot_other_hart();

Loading…
Cancel
Save