build system switch to cmake
Remove old build system at the same time Change-Id: Ifdffe1fcd4cfece05f036d8de6e7cb74aca65f62
This commit is contained in:
@ -88,26 +88,8 @@ int arch_setup_vdso(void)
|
||||
kprintf("Enable Host mapping vDSO.\n");
|
||||
return 0;
|
||||
}
|
||||
kprintf("Enable McK mapping vDSO.\n");
|
||||
|
||||
if (memcmp(&vdso_start, "\177ELF", 4)) {
|
||||
panic("vDSO is not a valid ELF object!\n");
|
||||
}
|
||||
|
||||
vdso.vdso_npages = (&vdso_end - &vdso_start) >> PAGE_SHIFT;
|
||||
dkprintf("vdso: %ld pages (%ld code @ %p, %ld data @ %p)\n",
|
||||
vdso.vdso_npages + 1, vdso.vdso_npages, &vdso_start, 1L, &tod_data);
|
||||
if (vdso.vdso_npages != 1) {
|
||||
panic("vDSO is not a valid number of pages!\n");
|
||||
}
|
||||
|
||||
vdso.vvar_phys = virt_to_phys((void *)&tod_data);
|
||||
vdso.vdso_physlist[0] = virt_to_phys((void *)&vdso_start);
|
||||
|
||||
vdso.lbase = VDSO_LBASE;
|
||||
vdso.offset_sigtramp = vdso_offset_sigtramp;
|
||||
|
||||
return 0;
|
||||
panic("Only support host mapping vDSO");
|
||||
}
|
||||
|
||||
static int get_free_area(struct process_vm *vm, size_t len, intptr_t hint,
|
||||
|
||||
@ -1,33 +0,0 @@
|
||||
/* vdso.so.S COPYRIGHT FUJITSU LIMITED 2016 */
|
||||
/* @ref.impl arch/arm64/kernel/vdso/vdso.S */
|
||||
/*
|
||||
* Copyright (C) 2012 ARM Limited
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Will Deacon <will.deacon@arm.com>
|
||||
*/
|
||||
|
||||
#include <arch-memory.h>
|
||||
#include <vdso-so-path.h>
|
||||
|
||||
.section ".vdso.txet", "aw"
|
||||
|
||||
.globl vdso_start, vdso_end
|
||||
.balign PAGE_SIZE
|
||||
vdso_start:
|
||||
.incbin VDSO_SO_PATH
|
||||
.balign PAGE_SIZE
|
||||
vdso_end:
|
||||
|
||||
.previous
|
||||
@ -1,137 +0,0 @@
|
||||
# Makefile.in COPYRIGHT FUJITSU LIMITED 2016-2018
|
||||
# @ref.impl arch/arm64/kernel/vdso/Makefile
|
||||
# Building a vDSO image for AArch64.
|
||||
|
||||
RMDIR=rmdir
|
||||
|
||||
HOST_DIR=@KDIR@
|
||||
HOST_CONFIG=$(HOST_DIR)/.config
|
||||
HOST_KERNEL_CONFIG_ARM64_4K_PAGES=$(shell grep -E "^CONFIG_ARM64_4K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_4K_PAGES=||g')
|
||||
HOST_KERNEL_CONFIG_ARM64_16K_PAGES=$(shell grep -E "^CONFIG_ARM64_16K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_16K_PAGES=||g')
|
||||
HOST_KERNEL_CONFIG_ARM64_64K_PAGES=$(shell grep -E "^CONFIG_ARM64_64K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_64K_PAGES=||g')
|
||||
|
||||
VDSOSRC = @abs_srcdir@
|
||||
VDSOBUILD = @abs_builddir@
|
||||
ECHO_SUFFIX = [VDSO]
|
||||
|
||||
VDSOOBJS := gettimeofday.o
|
||||
DESTOBJS = $(addprefix $(VDSOBUILD)/, $(VDSOOBJS))
|
||||
|
||||
VDSOASMOBJS := note.o sigreturn.o
|
||||
DESTASMOBJS = $(addprefix $(VDSOBUILD)/, $(VDSOASMOBJS))
|
||||
|
||||
$(if $(VDSOSRC),,$(error IHK output directory is not specified))
|
||||
$(if $(TARGET),,$(error Target is not specified))
|
||||
|
||||
#CFLAGS := -nostdinc -mlittle-endian -Wall -mabi=lp64 -Wa,-gdwarf-2
|
||||
CFLAGS += -nostdinc -mlittle-endian -Wall -Wa,-gdwarf-2
|
||||
CFLAGS += -I$(SRC)/include -I$(SRC)/../lib/include -I$(VDSOSRC)/../include
|
||||
CFLAGS += -I$(IHKBASE)/$(TARGETDIR)/include -Wno-unused-function -I$(IHKBASE)/../ikc/include -I$(IHKBASE)/../linux/include
|
||||
CFLAGS += -DIHK_OS_MANYCORE -D__KERNEL__
|
||||
CFLAGS += $(foreach i, $(shell seq 6 120), $(addprefix -DPOSTK_DEBUG_ARCH_DEP_, $(i)))
|
||||
CFLAGS += $(foreach i, $(shell seq 6 110), $(addprefix -DPOSTK_DEBUG_TEMP_FIX_, $(i)))
|
||||
|
||||
LDFLAGS := -nostdinc -mlittle-endian -Wall -Wundef -Wstrict-prototypes
|
||||
LDFLAGS += -Wno-trigraphs -fno-strict-aliasing -fno-common
|
||||
LDFLAGS += -Werror-implicit-function-declaration -Wno-format-security
|
||||
#LDFLAGS += -std=gnu89 -mgeneral-regs-only -mabi=lp64 -O2
|
||||
LDFLAGS += -std=gnu89 -mgeneral-regs-only -O2
|
||||
LDFLAGS += -Wframe-larger-than=2048 -fno-stack-protector
|
||||
LDFLAGS += -fno-delete-null-pointer-checks -Wno-unused-but-set-variable
|
||||
LDFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||
LDFLAGS += -fno-var-tracking-assignments -g -Wdeclaration-after-statement
|
||||
LDFLAGS += -Wno-pointer-sign -fno-strict-overflow -fconserve-stack
|
||||
LDFLAGS += -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time
|
||||
LDFLAGS += -shared -fno-common -fno-builtin -nostdlib
|
||||
LDFLAGS += -Wl,-soname=linux-vdso.so.1 -Wl,--hash-style=sysv -Wl,-n -Wl,-T
|
||||
LDFLAGS += --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO
|
||||
LDFLAGS += -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(vdso.so)"
|
||||
LDFLAGS += -D"KBUILD_MODNAME=KBUILD_STR(vdso.so)" -D__KERNEL__
|
||||
|
||||
DEPSRCS = $(wildcard $(VDSOSRC)/*.c $(VDSOSRC)/*.S)
|
||||
|
||||
CFLAGS_lds := -E -P -C -U$(ARCH)
|
||||
CFLAGS_lds += -nostdinc
|
||||
CFLAGS_lds += -mlittle-endian
|
||||
CFLAGS_lds += -D__KERNEL__
|
||||
CFLAGS_lds += -D__ASSEMBLY__
|
||||
CFLAGS_lds += -DLINKER_SCRIPT
|
||||
CFLAGS_lds += -DVDSO_LBASE=0
|
||||
ifeq ($(HOST_KERNEL_CONFIG_ARM64_4K_PAGES), y)
|
||||
CFLAGS_lds += -DPAGE_SIZE=0x1000
|
||||
endif
|
||||
ifeq ($(HOST_KERNEL_CONFIG_ARM64_16K_PAGES), y)
|
||||
CFLAGS_lds += -DPAGE_SIZE=0x4000
|
||||
endif
|
||||
ifeq ($(HOST_KERNEL_CONFIG_ARM64_64K_PAGES), y)
|
||||
CFLAGS_lds += -DPAGE_SIZE=0x10000
|
||||
endif
|
||||
|
||||
#load mckernel config (append CPPFLAGS)
|
||||
#include @abs_top_builddir@/../ihk/cokernel/Makefile.common
|
||||
include @abs_top_builddir@/../ihk/cokernel/$(TARGETDIR)/Makefile.predefines
|
||||
|
||||
default: all
|
||||
|
||||
.PHONY: all clean depend prepare
|
||||
|
||||
all: depend $(VDSOBUILD)/vdso.so $(VDSOBUILD)/../include/vdso-offsets.h $(VDSOBUILD)/../include/vdso-so-path.h
|
||||
|
||||
# Strip rule for the .so file
|
||||
$(VDSOBUILD)/vdso.so: OBJCOPYFLAGS := -S
|
||||
$(VDSOBUILD)/vdso.so: $(VDSOBUILD)/vdso.so.dbg
|
||||
$(objcopy_cmd)
|
||||
|
||||
# Generate VDSO offsets using helper script
|
||||
$(VDSOBUILD)/../include/vdso-offsets.h: $(VDSOBUILD)/vdso.so.dbg
|
||||
$(call echo_cmd,VDSOSYM,$<)
|
||||
@mkdir -p $(VDSOBUILD)/../include
|
||||
@nm $< | sh $(VDSOSRC)/gen_vdso_offsets.sh | LC_ALL=C sort > $@
|
||||
|
||||
$(VDSOBUILD)/../include/vdso-so-path.h:
|
||||
@echo "#define VDSO_SO_PATH \"@abs_builddir@/vdso.so\"" > $@
|
||||
|
||||
# Link rule for the .so file, .lds has to be first
|
||||
$(VDSOBUILD)/vdso.so.dbg: $(VDSOBUILD)/vdso.lds $(DESTOBJS) $(DESTASMOBJS)
|
||||
$(ld_cmd)
|
||||
|
||||
$(VDSOBUILD)/vdso.lds: $(VDSOSRC)/vdso.lds.S
|
||||
$(lds_cmd)
|
||||
|
||||
clean:
|
||||
$(rm_cmd) -f $(DESTOBJS) $(DESTASMOBJS) $(VDSOBUILD)/Makefile.dep $(VDSOBUILD)/vdso.lds
|
||||
$(rm_cmd) -f $(VDSOBUILD)/vdso.so* $(VDSOBUILD)/../include/vdso-offsets.h $(VDSOBUILD)/../include/vdso-so-path.h
|
||||
$(rmdir_cmd) --ignore-fail-on-non-empty $(VDSOBUILD)/../include
|
||||
|
||||
depend: $(VDSOBUILD)/Makefile.dep
|
||||
|
||||
$(VDSOBUILD)/Makefile.dep:
|
||||
$(call dep_cmd,$(DEPSRCS))
|
||||
|
||||
prepare:
|
||||
@$(RM) $(VDSOBUILD)/Makefile.dep
|
||||
|
||||
-include $(VDSOBUILD)/Makefile.dep
|
||||
|
||||
# Actual build commands
|
||||
ifeq ($(V),1)
|
||||
echo_cmd =
|
||||
submake = make
|
||||
else
|
||||
echo_cmd = @echo ' ($(TARGET))' $1 $(ECHO_SUFFIX) $2;
|
||||
submake = make --no-print-directory
|
||||
endif
|
||||
|
||||
cc_cmd = $(call echo_cmd,CC,$<)$(CC) $(CFLAGS) -c -o $@
|
||||
ld_cmd = $(call echo_cmd,LD,$@)$(CC) $(LDFLAGS) $^ -o $@
|
||||
dep_cmd = $(call echo_cmd,DEPEND,)$(CC) $(CFLAGS) -MM $1 > $@
|
||||
rm_cmd = $(call echo_cmd,CLEAN,)$(RM)
|
||||
rmdir_cmd = $(call echo_cmd,CLEAN,)$(RMDIR)
|
||||
objcopy_cmd = $(call echo_cmd,OBJCOPY,$<)$(OBJCOPY) $(OBJCOPYFLAGS) $< $@
|
||||
lds_cmd = $(call echo_cmd,LDS,$<)$(CC) $(CFLAGS_lds) -c -o $@ $<
|
||||
|
||||
$(DESTOBJS):
|
||||
$(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.c)))
|
||||
$(DESTASMOBJS):
|
||||
$(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.S))) -D__ASSEMBLY__
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
/* asm_syscall.h COPYRIGHT FUJITSU LIMITED 2016 */
|
||||
#ifndef __HEADER_ARM64_VDSO_SYSCALL_H
|
||||
#define __HEADER_ARM64_VDSO_SYSCALL_H
|
||||
|
||||
#define DECLARATOR(number,name) .equ __NR_##name, number
|
||||
#define SYSCALL_HANDLED(number,name) DECLARATOR(number,name)
|
||||
#define SYSCALL_DELEGATED(number,name) DECLARATOR(number,name)
|
||||
|
||||
#include <syscall_list.h>
|
||||
|
||||
#undef DECLARATOR
|
||||
#undef SYSCALL_HANDLED
|
||||
#undef SYSCALL_DELEGATED
|
||||
|
||||
#endif /* !__HEADER_ARM64_VDSO_SYSCALL_H */
|
||||
@ -1,17 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# gen_vdso_offsets.sh COPYRIGHT FUJITSU LIMITED 2016
|
||||
# @ref.impl arch/arm64/kernel/vdso/gen_vdso_offsets.sh
|
||||
#
|
||||
# Match symbols in the DSO that look like VDSO_*; produce a header file
|
||||
# of constant offsets into the shared object.
|
||||
#
|
||||
# Doing this inside the Makefile will break the $(filter-out) function,
|
||||
# causing Kbuild to rebuild the vdso-offsets header file every time.
|
||||
#
|
||||
# Author: Will Deacon <will.deacon@arm.com
|
||||
#
|
||||
|
||||
LC_ALL=C
|
||||
sed -n -e 's/^00*/0/' -e \
|
||||
's/^\([0-9a-fA-F]*\) . VDSO_\([a-zA-Z0-9_]*\)$/\#define vdso_offset_\2\t0x\1/p'
|
||||
@ -1,196 +0,0 @@
|
||||
/* gettimeofday.c COPYRIGHT FUJITSU LIMITED 2016-2018 */
|
||||
#include <time.h>
|
||||
#include <memory.h>
|
||||
#include <affinity.h>
|
||||
#include <syscall.h>
|
||||
#include <registers.h>
|
||||
#include <ihk/atomic.h>
|
||||
|
||||
#define UNUSED(x) ((void)(x))
|
||||
void vdso_gettimeofday_unused_funcs(void)
|
||||
{
|
||||
UNUSED(xgetbv);
|
||||
UNUSED(xsetbv);
|
||||
UNUSED(rdpmc);
|
||||
UNUSED(rdmsr);
|
||||
UNUSED(set_perfctl);
|
||||
UNUSED(start_perfctr);
|
||||
UNUSED(stop_perfctr);
|
||||
UNUSED(clear_perfctl);
|
||||
UNUSED(set_perfctr);
|
||||
UNUSED(read_perfctr);
|
||||
UNUSED(xos_is_tchip);
|
||||
}
|
||||
|
||||
extern int __kernel_gettimeofday(struct timeval *tv, void *tz);
|
||||
|
||||
static inline void cpu_pause_for_vsyscall(void)
|
||||
{
|
||||
asm volatile ("yield" ::: "memory");
|
||||
}
|
||||
|
||||
static inline void vdso_calculate_time_from_tsc(struct timespec *ts,
|
||||
struct tod_data_s *tod_data)
|
||||
{
|
||||
UNUSED(xgetbv);
|
||||
UNUSED(xsetbv);
|
||||
UNUSED(rdpmc);
|
||||
UNUSED(rdmsr);
|
||||
UNUSED(set_perfctl);
|
||||
UNUSED(start_perfctr);
|
||||
UNUSED(stop_perfctr);
|
||||
UNUSED(clear_perfctl);
|
||||
UNUSED(set_perfctr);
|
||||
UNUSED(read_perfctr);
|
||||
UNUSED(xos_is_tchip);
|
||||
}
|
||||
|
||||
static inline struct tod_data_s *get_tod_data_addr(void)
|
||||
{
|
||||
unsigned long addr;
|
||||
|
||||
asm volatile("adr %0, _tod_data\n"
|
||||
: "=r" (addr)
|
||||
:
|
||||
: "memory");
|
||||
|
||||
return (struct tod_data_s *)addr;
|
||||
}
|
||||
|
||||
int __kernel_gettimeofday(struct timeval *tv, void *tz)
|
||||
{
|
||||
long ret;
|
||||
struct tod_data_s *tod_data;
|
||||
struct timespec ats;
|
||||
|
||||
if(!tv && !tz) {
|
||||
/* nothing to do */
|
||||
return 0;
|
||||
}
|
||||
|
||||
tod_data = get_tod_data_addr();
|
||||
|
||||
/* DO it locally if supported */
|
||||
if (!tz && tod_data->do_local) {
|
||||
vdso_calculate_time_from_tsc(&ats, tod_data);
|
||||
|
||||
tv->tv_sec = ats.tv_sec;
|
||||
tv->tv_usec = ats.tv_nsec / 1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Otherwize syscall */
|
||||
asm volatile("mov w8, %w1\n"
|
||||
"mov x0, %2\n"
|
||||
"mov x1, %3\n"
|
||||
"svc #0\n"
|
||||
"mov %0, x0\n"
|
||||
: "=r" (ret)
|
||||
: "r" (__NR_gettimeofday), "r"(tv), "r"(tz)
|
||||
: "memory");
|
||||
|
||||
if (ret) {
|
||||
*(int *)0 = 0; /* i.e. raise(SIGSEGV) */
|
||||
}
|
||||
return (int)ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* The IDs of the various system clocks (for POSIX.1b interval timers):
|
||||
* @ref.impl include/uapi/linux/time.h
|
||||
*/
|
||||
// #define CLOCK_REALTIME 0
|
||||
// #define CLOCK_MONOTONIC 1
|
||||
// #define CLOCK_PROCESS_CPUTIME_ID 2
|
||||
// #define CLOCK_THREAD_CPUTIME_ID 3
|
||||
#define CLOCK_MONOTONIC_RAW 4
|
||||
#define CLOCK_REALTIME_COARSE 5
|
||||
#define CLOCK_MONOTONIC_COARSE 6
|
||||
#define CLOCK_BOOTTIME 7
|
||||
#define CLOCK_REALTIME_ALARM 8
|
||||
#define CLOCK_BOOTTIME_ALARM 9
|
||||
#define CLOCK_SGI_CYCLE 10 /* Hardware specific */
|
||||
#define CLOCK_TAI 11
|
||||
|
||||
#define HIGH_RES_NSEC 1 /* nsec. */
|
||||
#define CLOCK_REALTIME_RES HIGH_RES_NSEC
|
||||
|
||||
#define CLOCK_COARSE_RES ((NS_PER_SEC+CONFIG_HZ/2)/CONFIG_HZ) /* 10,000,000 nsec*/
|
||||
|
||||
typedef int clockid_t;
|
||||
|
||||
int __kernel_clock_gettime(clockid_t clk_id, struct timespec *tp)
|
||||
{
|
||||
long ret;
|
||||
struct tod_data_s *tod_data;
|
||||
struct timespec ats;
|
||||
|
||||
if (!tp) {
|
||||
/* nothing to do */
|
||||
return 0;
|
||||
}
|
||||
|
||||
tod_data = get_tod_data_addr();
|
||||
|
||||
/* DO it locally if supported */
|
||||
if (tod_data->do_local && clk_id == CLOCK_REALTIME) {
|
||||
vdso_calculate_time_from_tsc(&ats, tod_data);
|
||||
|
||||
tp->tv_sec = ats.tv_sec;
|
||||
tp->tv_nsec = ats.tv_nsec;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Otherwize syscall */
|
||||
asm volatile("mov w8, %w1\n"
|
||||
"mov x0, %2\n"
|
||||
"mov x1, %3\n"
|
||||
"svc #0\n"
|
||||
"mov %0, x0\n"
|
||||
: "=r" (ret)
|
||||
: "r" (__NR_clock_gettime), "r"(clk_id), "r"(tp)
|
||||
: "memory");
|
||||
|
||||
return (int)ret;
|
||||
}
|
||||
|
||||
int __kernel_clock_getres(clockid_t clk_id, struct timespec *res)
|
||||
{
|
||||
long ret;
|
||||
|
||||
if (!res) {
|
||||
/* nothing to do */
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (clk_id) {
|
||||
case CLOCK_REALTIME:
|
||||
case CLOCK_MONOTONIC:
|
||||
res->tv_sec = 0;
|
||||
res->tv_nsec = CLOCK_REALTIME_RES;
|
||||
return 0;
|
||||
break;
|
||||
case CLOCK_REALTIME_COARSE:
|
||||
case CLOCK_MONOTONIC_COARSE:
|
||||
res->tv_sec = 0;
|
||||
res->tv_nsec = CLOCK_COARSE_RES;
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Otherwise syscall */
|
||||
asm volatile("mov w8, %w1\n"
|
||||
"mov x0, %2\n"
|
||||
"mov x1, %3\n"
|
||||
"svc #0\n"
|
||||
"mov %0, x0\n"
|
||||
: "=r" (ret)
|
||||
: "r" (__NR_clock_getres), "r"(clk_id), "r"(res)
|
||||
: "memory");
|
||||
|
||||
return (int)ret;
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
/* note.S COPYRIGHT FUJITSU LIMITED 2016 */
|
||||
/* @ref.impl arch/arm64/kernel/vdso/note.S */
|
||||
/*
|
||||
* Copyright (C) 2012 ARM Limited
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Will Deacon <will.deacon@arm.com>
|
||||
*
|
||||
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
|
||||
* Here we can supply some information useful to userland.
|
||||
*/
|
||||
|
||||
#include <elfnote.h>
|
||||
|
||||
ELFNOTE_START(McKernel, 0, "a")
|
||||
.long 0x10000 /* MCKERNEL_VERSION_CODE */
|
||||
ELFNOTE_END
|
||||
@ -1,39 +0,0 @@
|
||||
/* sigreturn.S COPYRIGHT FUJITSU LIMITED 2016 */
|
||||
/* @ref.impl arch/arm64/kernel/vdso/sigreturn.S */
|
||||
/*
|
||||
* Sigreturn trampoline for returning from a signal when the SA_RESTORER
|
||||
* flag is not set.
|
||||
*
|
||||
* Copyright (C) 2012 ARM Limited
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Will Deacon <will.deacon@arm.com>
|
||||
*/
|
||||
|
||||
#include <linkage.h>
|
||||
#include <asm-syscall.h>
|
||||
|
||||
.text
|
||||
|
||||
nop
|
||||
ENTRY(__kernel_rt_sigreturn)
|
||||
.cfi_startproc
|
||||
.cfi_signal_frame
|
||||
.cfi_def_cfa x29, 0
|
||||
.cfi_offset x29, 0 * 8
|
||||
.cfi_offset x30, 1 * 8
|
||||
mov x8, #__NR_rt_sigreturn
|
||||
svc #0
|
||||
.cfi_endproc
|
||||
ENDPROC(__kernel_rt_sigreturn)
|
||||
@ -1,96 +0,0 @@
|
||||
/* vdso.lds.S COPYRIGHT FUJITSU LIMITED 2016 */
|
||||
/* @ref.impl arch/arm64/kernel/vdso/vdso.lds.S */
|
||||
/*
|
||||
* GNU linker script for the VDSO library.
|
||||
*
|
||||
* Copyright (C) 2012 ARM Limited
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Will Deacon <will.deacon@arm.com>
|
||||
* Heavily based on the vDSO linker scripts for other archs.
|
||||
*/
|
||||
|
||||
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
|
||||
OUTPUT_ARCH(aarch64)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
PROVIDE(_tod_data = . - PAGE_SIZE);
|
||||
. = VDSO_LBASE + SIZEOF_HEADERS;
|
||||
|
||||
.hash : { *(.hash) } :text
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
|
||||
.note : { *(.note.*) } :text :note
|
||||
|
||||
. = ALIGN(16);
|
||||
|
||||
.text : { *(.text*) } :text =0xd503201f
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
|
||||
.eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
|
||||
.eh_frame : { KEEP (*(.eh_frame)) } :text
|
||||
|
||||
.dynamic : { *(.dynamic) } :text :dynamic
|
||||
|
||||
.rodata : { *(.rodata*) } :text
|
||||
|
||||
_end = .;
|
||||
PROVIDE(end = .);
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.note.GNU-stack)
|
||||
*(.data .data.* .gnu.linkonce.d.* .sdata*)
|
||||
*(.bss .sbss .dynbss .dynsbss)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We must supply the ELF program headers explicitly to get just one
|
||||
* PT_LOAD segment, and set the flags explicitly to make segments read-only.
|
||||
*/
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
|
||||
dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
|
||||
note PT_NOTE FLAGS(4); /* PF_R */
|
||||
eh_frame_hdr PT_GNU_EH_FRAME;
|
||||
}
|
||||
|
||||
/*
|
||||
* This controls what symbols we export from the DSO.
|
||||
*/
|
||||
VERSION
|
||||
{
|
||||
LINUX_2.6.39 {
|
||||
global:
|
||||
__kernel_rt_sigreturn;
|
||||
__kernel_gettimeofday;
|
||||
__kernel_clock_gettime;
|
||||
__kernel_clock_getres;
|
||||
local: *;
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* Make the sigreturn code visible to the kernel.
|
||||
*/
|
||||
VDSO_sigtramp = __kernel_rt_sigreturn;
|
||||
@ -18,8 +18,8 @@ prefix="@prefix@"
|
||||
BINDIR="${prefix}/bin"
|
||||
SBINDIR="${prefix}/sbin"
|
||||
ETCDIR=@ETCDIR@
|
||||
KMODDIR="${prefix}/kmod"
|
||||
KERNDIR="${prefix}/@TARGET@/kernel"
|
||||
KMODDIR="@KMODDIR@"
|
||||
KERNDIR="@MCKERNELDIR@"
|
||||
ENABLE_MCOVERLAYFS="@ENABLE_MCOVERLAYFS@"
|
||||
MCK_BUILDID=@BUILDID@
|
||||
|
||||
@ -138,32 +138,32 @@ error_exit() {
|
||||
fi
|
||||
;&
|
||||
mcos_sys_mounted)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
umount /tmp/mcos/mcos0_sys
|
||||
fi
|
||||
;&
|
||||
mcos_proc_mounted)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
umount /tmp/mcos/mcos0_proc
|
||||
fi
|
||||
;&
|
||||
mcoverlayfs_loaded)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
rmmod mcoverlay 2>/dev/null
|
||||
fi
|
||||
;&
|
||||
linux_proc_bind_mounted)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
umount /tmp/mcos/linux_proc
|
||||
fi
|
||||
;&
|
||||
tmp_mcos_mounted)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
umount /tmp/mcos
|
||||
fi
|
||||
;&
|
||||
tmp_mcos_created)
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
rm -rf /tmp/mcos
|
||||
fi
|
||||
;&
|
||||
@ -255,7 +255,7 @@ if [ "$cpus" == "" ]; then
|
||||
fi
|
||||
|
||||
# Remove mcoverlay if loaded
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
${SBINDIR}/mcoverlay-destroy.sh
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
@ -462,7 +462,7 @@ if ! chown ${chown_option} /dev/mcd* /dev/mcos*; then
|
||||
fi
|
||||
|
||||
# Overlay /proc, /sys with McKernel specific contents
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "yes" ]; then
|
||||
if [ "$ENABLE_MCOVERLAYFS" == "ON" ]; then
|
||||
${SBINDIR}/mcoverlay-create.sh
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
|
||||
@ -100,15 +100,6 @@ if grep mcctrl /proc/modules &>/dev/null; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Remove mcoverlay if loaded
|
||||
${SBINDIR}/mcoverlay-destroy.sh
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "error: mcoverlay-destroy.sh" >&2
|
||||
exit $ret
|
||||
fi
|
||||
|
||||
|
||||
# Remove SMP module
|
||||
if grep ihk_smp_@ARCH@ /proc/modules &>/dev/null; then
|
||||
if ! rmmod ihk_smp_@ARCH@ 2>/dev/null; then
|
||||
|
||||
Reference in New Issue
Block a user