support builtin-x86 and builtin-mic

This commit is contained in:
shirasawa
2013-01-06 15:45:17 +09:00
parent 884bd5db82
commit 9818e199f6
17 changed files with 380 additions and 142 deletions

View File

@ -1,5 +1,5 @@
#BUILD_TARGET = builtin-mic attached-mic
BUILD_TARGET = attached-mic
BUILD_TARGET ?= attached-mic
SRC = $(CURDIR)
IHKBASE ?= $(SRC)/../../ihk/cokernel

View File

@ -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 $@

View 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)
}
}

View 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

View File

@ -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>

View File

@ -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)
{

View 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

View File

@ -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