support builtin-x86 and builtin-mic
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
#BUILD_TARGET = builtin-mic attached-mic
|
||||
BUILD_TARGET = attached-mic
|
||||
BUILD_TARGET ?= attached-mic
|
||||
SRC = $(CURDIR)
|
||||
|
||||
IHKBASE ?= $(SRC)/../../ihk/cokernel
|
||||
|
||||
@ -14,6 +14,9 @@ include $(IHKBASE)/Makefile.common
|
||||
|
||||
SUBCMD_OPTS = TARGET=$(TARGET) O=$(CURDIR)/ihk CC=$(CC) LD=$(LD) SRC=$(SRC)
|
||||
|
||||
OBJDUMP ?= objdump
|
||||
OBJCOPY ?= objcopy
|
||||
|
||||
ld_kern_cmd_base = $(LD) $(LDFLAGS) -o $@.elf $^
|
||||
mkimage_cmd_base = [ -f $(SRC)/script/mkimage.$(TARGET) ] && CC=$(CC) LD=$(LD) LDFLAGS="$(LDFLAGS_MKIMAGE)" OBJDUMP=$(OBJDUMP) OBJCOPY=$(OBJCOPY) sh $(SRC)/script/mkimage.$(TARGET) '$@.elf' '$@' '$(SRC)' || cp $@.elf $@
|
||||
|
||||
|
||||
33
kernel/config/builtin-mic.lds
Normal file
33
kernel/config/builtin-mic.lds
Normal file
@ -0,0 +1,33 @@
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FLAGS(5);
|
||||
data PT_LOAD FLAGS(7);
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = 0xffffffff80001000;
|
||||
_head = .;
|
||||
|
||||
.text : {
|
||||
*(.text);
|
||||
} : text
|
||||
|
||||
. = ALIGN(4096);
|
||||
.data : {
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
} :data
|
||||
.rodata : {
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
}
|
||||
. = ALIGN(4096);
|
||||
_end = .;
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
||||
*(.note.gnu.build-id)
|
||||
}
|
||||
}
|
||||
8
kernel/config/config.builtin-mic
Normal file
8
kernel/config/config.builtin-mic
Normal file
@ -0,0 +1,8 @@
|
||||
CC = /opt/knc/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc
|
||||
LD = /opt/knc/linux-k1om-4.7/bin/x86_64-k1om-linux-ld
|
||||
OBJDUMP = /opt/knc/linux-k1om-4.7/bin/x86_64-k1om-linux-objdump
|
||||
OBJCOPY = /opt/knc/linux-k1om-4.7/bin/x86_64-k1om-linux-objcopy
|
||||
|
||||
CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow
|
||||
LDFLAGS += -m elf_k1om -T $(SRC)/config/builtin-mic.lds
|
||||
LDFLAGS_MKIMAGE = -m elf_k1om
|
||||
@ -20,7 +20,9 @@
|
||||
|
||||
#define PS_NORMAL (PS_INTERRUPTIBLE | PS_UNINTERRUPTIBLE)
|
||||
|
||||
#ifdef ATTACHED_MIC
|
||||
#define USE_LARGE_PAGES
|
||||
#endif
|
||||
|
||||
#include <waitq.h>
|
||||
#include <futex.h>
|
||||
|
||||
10
kernel/mem.c
10
kernel/mem.c
@ -7,8 +7,10 @@
|
||||
#include <ihk/mm.h>
|
||||
#include <ihk/page_alloc.h>
|
||||
#include <registers.h>
|
||||
#ifdef ATTACHED_MIC
|
||||
#include <sysdeps/mic/mic/micconst.h>
|
||||
#include <sysdeps/mic/mic/micsboxdefine.h>
|
||||
#endif
|
||||
#include <cls.h>
|
||||
|
||||
//#define DEBUG_PRINT_MEM
|
||||
@ -125,13 +127,15 @@ static void page_allocator_init(void)
|
||||
pa_start &= PAGE_MASK;
|
||||
pa_end = (pa_end + PAGE_SIZE - 1) & PAGE_MASK;
|
||||
|
||||
/*
|
||||
#ifndef ATTACHED_MIC
|
||||
page_map_pa = ihk_mc_get_memory_address(IHK_MC_GMA_HEAP_START, 0);
|
||||
page_map = phys_to_virt(page_map_pa);
|
||||
#else
|
||||
/*
|
||||
* Can't allocate in reserved area
|
||||
* TODO: figure this out automatically!
|
||||
*/
|
||||
page_map_pa = 0x100000;
|
||||
#endif
|
||||
page_map = phys_to_virt(page_map_pa);
|
||||
|
||||
pa_allocator = __ihk_pagealloc_init(pa_start, pa_end - pa_start,
|
||||
@ -209,6 +213,7 @@ void ihk_mc_unmap_virtual(void *va, int npages, int free_physical)
|
||||
ihk_pagealloc_free(vmap_allocator, virt_to_phys(va), npages);
|
||||
}
|
||||
|
||||
#ifdef ATTACHED_MIC
|
||||
/* moved from ihk_knc/manycore/mic/setup.c */
|
||||
/*static*/ void *sbox_base = (void *)SBOX_BASE;
|
||||
void sbox_write(int offset, unsigned int value)
|
||||
@ -258,6 +263,7 @@ void ihk_mc_clean_micpa(void){
|
||||
free_bitmap_micpa = ((~((1ULL<<(NUM_SMPT_ENTRIES_IN_USE - NUM_SMPT_ENTRIES_MICPA))-1))&((1ULL << NUM_SMPT_ENTRIES_IN_USE) - 1));
|
||||
kprintf("ihk_mc_clean_micpa\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
void mem_init(void)
|
||||
{
|
||||
|
||||
20
kernel/script/mkimage.builtin-mic
Normal file
20
kernel/script/mkimage.builtin-mic
Normal file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
O=`pwd`
|
||||
|
||||
make -C $3/../arch/x86/kboot O=$O clean
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x3a001000
|
||||
make -C $3/../arch/x86/kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x21001000
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x901001000
|
||||
|
||||
make -C $3/../arch/x86/elfboot O=$O clean
|
||||
make -C $3/../arch/x86/elfboot O=$O
|
||||
|
||||
cat elfboot/elfboot kboot/kboot.elf > $2
|
||||
|
||||
make -C $3/../arch/x86/kboot O=$O clean
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x3a001000
|
||||
make -C $3/../arch/x86/kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x31001000
|
||||
cat elfboot/elfboot kboot/kboot.elf > $2.768M
|
||||
@ -4,9 +4,17 @@ set -e
|
||||
|
||||
O=`pwd`
|
||||
|
||||
make -C $3/../kboot O=$O clean
|
||||
make -C $3/../arch/x86/kboot O=$O clean
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x3a001000
|
||||
make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x101001000
|
||||
make -C $3/../arch/x86/kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x101001000
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x901001000
|
||||
|
||||
cat $3/../elfboot/elfboot kboot/kboot.elf > $2
|
||||
make -C $3/../arch/x86/elfboot O=$O clean
|
||||
make -C $3/../arch/x86/elfboot O=$O
|
||||
|
||||
cat elfboot/elfboot kboot/kboot.elf > $2
|
||||
|
||||
make -C $3/../arch/x86/kboot O=$O clean
|
||||
#make -C $3/../kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x3a001000
|
||||
make -C $3/../arch/x86/kboot O=$O KIMAGE="$O/$1" LOAD_PA=0x201001000
|
||||
cat elfboot/elfboot kboot/kboot.elf > $2.8G
|
||||
|
||||
Reference in New Issue
Block a user