Browse Source

bbl: copy dtb after the kernel

hax
Wesley W. Terpstra 9 years ago
parent
commit
96e5ed750e
  1. 18
      bbl/bbl.c

18
bbl/bbl.c

@ -4,10 +4,25 @@
#include "vm.h"
#include "bits.h"
#include "config.h"
#include "fdt.h"
#include <string.h>
static const void* entry_point;
static uintptr_t dtb_output()
{
extern char _payload_end;
uintptr_t end = (uintptr_t) &_payload_end;
return (end + MEGAPAGE_SIZE - 1) / MEGAPAGE_SIZE * MEGAPAGE_SIZE;
}
static void filter_dtb(uintptr_t source)
{
uintptr_t dest = dtb_output();
uint32_t size = fdt_size(source);
memcpy((void*)dest, (void*)source, size);
}
void boot_other_hart(uintptr_t dtb)
{
const void* entry;
@ -15,12 +30,13 @@ void boot_other_hart(uintptr_t dtb)
entry = entry_point;
mb();
} while (!entry);
enter_supervisor_mode(entry, read_csr(mhartid), dtb);
enter_supervisor_mode(entry, read_csr(mhartid), dtb_output());
}
void boot_loader(uintptr_t dtb)
{
extern char _payload_start;
filter_dtb(dtb);
#ifdef PK_ENABLE_LOGO
print_logo();
#endif

Loading…
Cancel
Save