powerpc/vdso: Merge vdso64 and vdso32 into a single directory
merge vdso64 into vdso32 and rename it vdso. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/4dbe05cc130f6a0858d09ac72e436c373cb08b70.1642782130.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
d88378d8d2
commit
fd1feade75
@ -421,9 +421,9 @@ ifeq ($(KBUILD_EXTMOD),)
|
||||
prepare: vdso_prepare
|
||||
vdso_prepare: prepare0
|
||||
$(if $(CONFIG_VDSO32),$(Q)$(MAKE) \
|
||||
$(build)=arch/powerpc/kernel/vdso32 include/generated/vdso32-offsets.h)
|
||||
$(build)=arch/powerpc/kernel/vdso include/generated/vdso32-offsets.h)
|
||||
$(if $(CONFIG_PPC64),$(Q)$(MAKE) \
|
||||
$(build)=arch/powerpc/kernel/vdso64 include/generated/vdso64-offsets.h)
|
||||
$(build)=arch/powerpc/kernel/vdso include/generated/vdso64-offsets.h)
|
||||
endif
|
||||
|
||||
archprepare: checkbin
|
||||
|
@ -194,8 +194,8 @@ targets += prom_init_check
|
||||
clean-files := vmlinux.lds
|
||||
|
||||
# Force dependency (incbin is bad)
|
||||
$(obj)/vdso32_wrapper.o : $(obj)/vdso32/vdso32.so.dbg
|
||||
$(obj)/vdso64_wrapper.o : $(obj)/vdso64/vdso64.so.dbg
|
||||
$(obj)/vdso32_wrapper.o : $(obj)/vdso/vdso32.so.dbg
|
||||
$(obj)/vdso64_wrapper.o : $(obj)/vdso/vdso64.so.dbg
|
||||
|
||||
# for cleaning
|
||||
subdir- += vdso32 vdso64
|
||||
subdir- += vdso
|
||||
|
@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
vdso32.lds
|
||||
vdso32.so.dbg
|
||||
vdso64.lds
|
||||
vdso64.so.dbg
|
@ -6,6 +6,7 @@ ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_
|
||||
include $(srctree)/lib/vdso/Makefile
|
||||
|
||||
obj-vdso32 = sigtramp32-32.o gettimeofday-32.o datapage-32.o cacheflush-32.o note-32.o getcpu-32.o
|
||||
obj-vdso64 = sigtramp64-64.o gettimeofday-64.o datapage-64.o cacheflush-64.o note-64.o getcpu-64.o
|
||||
|
||||
ifneq ($(c-gettimeofday-y),)
|
||||
CFLAGS_vgettimeofday-32.o += -include $(c-gettimeofday-y)
|
||||
@ -15,6 +16,17 @@ ifneq ($(c-gettimeofday-y),)
|
||||
CFLAGS_vgettimeofday-32.o += -ffreestanding -fasynchronous-unwind-tables
|
||||
CFLAGS_REMOVE_vgettimeofday-32.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_vgettimeofday-32.o += -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc
|
||||
CFLAGS_vgettimeofday-64.o += -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-64.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
|
||||
CFLAGS_vgettimeofday-64.o += $(call cc-option, -fno-stack-protector)
|
||||
CFLAGS_vgettimeofday-64.o += -DDISABLE_BRANCH_PROFILING
|
||||
CFLAGS_vgettimeofday-64.o += -ffreestanding -fasynchronous-unwind-tables
|
||||
CFLAGS_REMOVE_vgettimeofday-64.o = $(CC_FLAGS_FTRACE)
|
||||
# Go prior to 1.16.x assumes r30 is not clobbered by any VDSO code. That used to be true
|
||||
# by accident when the VDSO was hand-written asm code, but may not be now that the VDSO is
|
||||
# compiler generated. To avoid breaking Go tell GCC not to use r30. Impact on code
|
||||
# generation is minimal, it will just use r29 instead.
|
||||
CFLAGS_vgettimeofday-64.o += $(call cc-option, -ffixed-r30)
|
||||
endif
|
||||
|
||||
# Build rules
|
||||
@ -27,6 +39,8 @@ endif
|
||||
|
||||
targets := $(obj-vdso32) vdso32.so.dbg vgettimeofday-32.o
|
||||
obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32))
|
||||
targets += $(obj-vdso64) vdso64.so.dbg vgettimeofday-64.o
|
||||
obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64))
|
||||
|
||||
GCOV_PROFILE := n
|
||||
KCOV_INSTRUMENT := n
|
||||
@ -38,26 +52,42 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib -Wl,--hash-style=both
|
||||
CC32FLAGS := -Wl,-soname=linux-vdso32.so.1 -m32
|
||||
AS32FLAGS := -D__VDSO32__ -s
|
||||
|
||||
CC64FLAGS := -Wl,-soname=linux-vdso64.so.1
|
||||
AS64FLAGS := -D__VDSO64__ -s
|
||||
|
||||
targets += vdso32.lds
|
||||
CPPFLAGS_vdso32.lds += -P -C -Upowerpc
|
||||
targets += vdso64.lds
|
||||
CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
|
||||
|
||||
# link rule for the .so file, .lds has to be first
|
||||
$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday-32.o FORCE
|
||||
$(call if_changed,vdso32ld_and_check)
|
||||
$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday-64.o FORCE
|
||||
$(call if_changed,vdso64ld_and_check)
|
||||
|
||||
# assembly rules for the .S files
|
||||
$(obj-vdso32): %-32.o: %.S FORCE
|
||||
$(call if_changed_dep,vdso32as)
|
||||
$(obj)/vgettimeofday-32.o: %-32.o: %.c FORCE
|
||||
$(call if_changed_dep,vdso32cc)
|
||||
$(obj-vdso64): %-64.o: %.S FORCE
|
||||
$(call if_changed_dep,vdso64as)
|
||||
$(obj)/vgettimeofday-64.o: %-64.o: %.c FORCE
|
||||
$(call if_changed_dep,cc_o_c)
|
||||
|
||||
# Generate VDSO offsets using helper script
|
||||
gen-vdso32sym := $(srctree)/$(src)/gen_vdso32_offsets.sh
|
||||
quiet_cmd_vdso32sym = VDSO32SYM $@
|
||||
cmd_vdso32sym = $(NM) $< | $(gen-vdso32sym) | LC_ALL=C sort > $@
|
||||
gen-vdso64sym := $(srctree)/$(src)/gen_vdso64_offsets.sh
|
||||
quiet_cmd_vdso64sym = VDSO64SYM $@
|
||||
cmd_vdso64sym = $(NM) $< | $(gen-vdso64sym) | LC_ALL=C sort > $@
|
||||
|
||||
include/generated/vdso32-offsets.h: $(obj)/vdso32.so.dbg FORCE
|
||||
$(call if_changed,vdso32sym)
|
||||
include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE
|
||||
$(call if_changed,vdso64sym)
|
||||
|
||||
# actual build commands
|
||||
quiet_cmd_vdso32ld_and_check = VDSO32L $@
|
||||
@ -66,3 +96,8 @@ quiet_cmd_vdso32as = VDSO32A $@
|
||||
cmd_vdso32as = $(VDSOCC) $(a_flags) $(CC32FLAGS) $(AS32FLAGS) -c -o $@ $<
|
||||
quiet_cmd_vdso32cc = VDSO32C $@
|
||||
cmd_vdso32cc = $(VDSOCC) $(c_flags) $(CC32FLAGS) -c -o $@ $<
|
||||
|
||||
quiet_cmd_vdso64ld_and_check = VDSO64L $@
|
||||
cmd_vdso64ld_and_check = $(VDSOCC) $(c_flags) $(CC64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) ; $(cmd_vdso_check)
|
||||
quiet_cmd_vdso64as = VDSO64A $@
|
||||
cmd_vdso64as = $(VDSOCC) $(a_flags) $(CC64FLAGS) $(AS64FLAGS) -c -o $@ $<
|
@ -7,7 +7,7 @@
|
||||
.globl vdso32_start, vdso32_end
|
||||
.balign PAGE_SIZE
|
||||
vdso32_start:
|
||||
.incbin "arch/powerpc/kernel/vdso32/vdso32.so.dbg"
|
||||
.incbin "arch/powerpc/kernel/vdso/vdso32.so.dbg"
|
||||
.balign PAGE_SIZE
|
||||
vdso32_end:
|
||||
|
||||
|
3
arch/powerpc/kernel/vdso64/.gitignore
vendored
3
arch/powerpc/kernel/vdso64/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
vdso64.lds
|
||||
vdso64.so.dbg
|
@ -1,56 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# List of files in the vdso, has to be asm only for now
|
||||
|
||||
ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN|R_PPC_REL24
|
||||
include $(srctree)/lib/vdso/Makefile
|
||||
|
||||
obj-vdso64 = sigtramp.o gettimeofday.o datapage.o cacheflush.o note.o getcpu.o
|
||||
|
||||
ifneq ($(c-gettimeofday-y),)
|
||||
CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
|
||||
CFLAGS_vgettimeofday.o += $(call cc-option, -fno-stack-protector)
|
||||
CFLAGS_vgettimeofday.o += -DDISABLE_BRANCH_PROFILING
|
||||
CFLAGS_vgettimeofday.o += -ffreestanding -fasynchronous-unwind-tables
|
||||
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
|
||||
# Build rules
|
||||
|
||||
targets := $(obj-vdso64) vdso64.so.dbg vgettimeofday.o
|
||||
obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64))
|
||||
|
||||
GCOV_PROFILE := n
|
||||
KCOV_INSTRUMENT := n
|
||||
UBSAN_SANITIZE := n
|
||||
KASAN_SANITIZE := n
|
||||
|
||||
ccflags-y := -shared -fno-common -fno-builtin -nostdlib \
|
||||
-Wl,-soname=linux-vdso64.so.1 -Wl,--hash-style=both
|
||||
|
||||
# Go prior to 1.16.x assumes r30 is not clobbered by any VDSO code. That used to be true
|
||||
# by accident when the VDSO was hand-written asm code, but may not be now that the VDSO is
|
||||
# compiler generated. To avoid breaking Go tell GCC not to use r30. Impact on code
|
||||
# generation is minimal, it will just use r29 instead.
|
||||
ccflags-y += $(call cc-option, -ffixed-r30)
|
||||
|
||||
asflags-y := -D__VDSO64__ -s
|
||||
|
||||
targets += vdso64.lds
|
||||
CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
|
||||
|
||||
# link rule for the .so file, .lds has to be first
|
||||
$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday.o FORCE
|
||||
$(call if_changed,vdso64ld_and_check)
|
||||
|
||||
# Generate VDSO offsets using helper script
|
||||
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
|
||||
quiet_cmd_vdsosym = VDSOSYM $@
|
||||
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
|
||||
|
||||
include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE
|
||||
$(call if_changed,vdsosym)
|
||||
|
||||
# actual build commands
|
||||
quiet_cmd_vdso64ld_and_check = VDSO64L $@
|
||||
cmd_vdso64ld_and_check = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check)
|
@ -1,75 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* vDSO provided cache flush routines
|
||||
*
|
||||
* Copyright (C) 2004 Benjamin Herrenschmuidt (benh@kernel.crashing.org),
|
||||
* IBM Corp.
|
||||
*/
|
||||
#include <asm/processor.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/vdso_datapage.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
.text
|
||||
|
||||
/*
|
||||
* Default "generic" version of __kernel_sync_dicache.
|
||||
*
|
||||
* void __kernel_sync_dicache(unsigned long start, unsigned long end)
|
||||
*
|
||||
* Flushes the data cache & invalidate the instruction cache for the
|
||||
* provided range [start, end[
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_sync_dicache)
|
||||
.cfi_startproc
|
||||
BEGIN_FTR_SECTION
|
||||
b 3f
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
|
||||
mflr r12
|
||||
.cfi_register lr,r12
|
||||
get_datapage r10
|
||||
mtlr r12
|
||||
.cfi_restore lr
|
||||
|
||||
lwz r7,CFG_DCACHE_BLOCKSZ(r10)
|
||||
addi r5,r7,-1
|
||||
andc r6,r3,r5 /* round low to line bdy */
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5 /* ensure we get enough */
|
||||
lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10)
|
||||
srd. r8,r8,r9 /* compute line count */
|
||||
crclr cr0*4+so
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
1: dcbst 0,r6
|
||||
add r6,r6,r7
|
||||
bdnz 1b
|
||||
sync
|
||||
|
||||
/* Now invalidate the instruction cache */
|
||||
|
||||
lwz r7,CFG_ICACHE_BLOCKSZ(r10)
|
||||
addi r5,r7,-1
|
||||
andc r6,r3,r5 /* round low to line bdy */
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5
|
||||
lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10)
|
||||
srd. r8,r8,r9 /* compute line count */
|
||||
crclr cr0*4+so
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
2: icbi 0,r6
|
||||
add r6,r6,r7
|
||||
bdnz 2b
|
||||
isync
|
||||
li r3,0
|
||||
blr
|
||||
3:
|
||||
crclr cr0*4+so
|
||||
sync
|
||||
isync
|
||||
li r3,0
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_sync_dicache)
|
@ -1,59 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Access to the shared data page by the vDSO & syscall map
|
||||
*
|
||||
* Copyright (C) 2004 Benjamin Herrenschmuidt (benh@kernel.crashing.org), IBM Corp.
|
||||
*/
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/vdso_datapage.h>
|
||||
|
||||
.text
|
||||
|
||||
/*
|
||||
* void *__kernel_get_syscall_map(unsigned int *syscall_count) ;
|
||||
*
|
||||
* returns a pointer to the syscall map. the map is agnostic to the
|
||||
* size of "long", unlike kernel bitops, it stores bits from top to
|
||||
* bottom so that memory actually contains a linear bitmap
|
||||
* check for syscall N by testing bit (0x80000000 >> (N & 0x1f)) of
|
||||
* 32 bits int at N >> 5.
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_get_syscall_map)
|
||||
.cfi_startproc
|
||||
mflr r12
|
||||
.cfi_register lr,r12
|
||||
mr r4,r3
|
||||
get_datapage r3
|
||||
mtlr r12
|
||||
addi r3,r3,CFG_SYSCALL_MAP64
|
||||
cmpldi cr0,r4,0
|
||||
crclr cr0*4+so
|
||||
beqlr
|
||||
li r0,NR_syscalls
|
||||
stw r0,0(r4)
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_get_syscall_map)
|
||||
|
||||
|
||||
/*
|
||||
* void unsigned long __kernel_get_tbfreq(void);
|
||||
*
|
||||
* returns the timebase frequency in HZ
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_get_tbfreq)
|
||||
.cfi_startproc
|
||||
mflr r12
|
||||
.cfi_register lr,r12
|
||||
get_datapage r3
|
||||
ld r3,CFG_TB_TICKS_PER_SEC(r3)
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_get_tbfreq)
|
@ -1,33 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
*
|
||||
* Copyright (C) IBM Corporation, 2012
|
||||
*
|
||||
* Author: Anton Blanchard <anton@au.ibm.com>
|
||||
*/
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/vdso.h>
|
||||
|
||||
.text
|
||||
/*
|
||||
* Exact prototype of getcpu
|
||||
*
|
||||
* int __kernel_getcpu(unsigned *cpu, unsigned *node);
|
||||
*
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_getcpu)
|
||||
.cfi_startproc
|
||||
mfspr r5,SPRN_SPRG_VDSO_READ
|
||||
cmpdi cr0,r3,0
|
||||
cmpdi cr1,r4,0
|
||||
clrlwi r6,r5,16
|
||||
rlwinm r7,r5,16,31-15,31-0
|
||||
beq cr0,1f
|
||||
stw r6,0(r3)
|
||||
1: beq cr1,2f
|
||||
stw r7,0(r4)
|
||||
2: crclr cr0*4+so
|
||||
li r3,0 /* always success */
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_getcpu)
|
@ -1,58 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Userland implementation of gettimeofday() for 64 bits processes in a
|
||||
* ppc64 kernel for use in the vDSO
|
||||
*
|
||||
* Copyright (C) 2004 Benjamin Herrenschmuidt (benh@kernel.crashing.org),
|
||||
* IBM Corp.
|
||||
*/
|
||||
#include <asm/processor.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/vdso_datapage.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/vdso/gettimeofday.h>
|
||||
|
||||
.text
|
||||
/*
|
||||
* Exact prototype of gettimeofday
|
||||
*
|
||||
* int __kernel_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||
*
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_gettimeofday)
|
||||
cvdso_call __c_kernel_gettimeofday
|
||||
V_FUNCTION_END(__kernel_gettimeofday)
|
||||
|
||||
|
||||
/*
|
||||
* Exact prototype of clock_gettime()
|
||||
*
|
||||
* int __kernel_clock_gettime(clockid_t clock_id, struct timespec *tp);
|
||||
*
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
cvdso_call __c_kernel_clock_gettime
|
||||
V_FUNCTION_END(__kernel_clock_gettime)
|
||||
|
||||
|
||||
/*
|
||||
* Exact prototype of clock_getres()
|
||||
*
|
||||
* int __kernel_clock_getres(clockid_t clock_id, struct timespec *res);
|
||||
*
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_clock_getres)
|
||||
cvdso_call __c_kernel_clock_getres
|
||||
V_FUNCTION_END(__kernel_clock_getres)
|
||||
|
||||
/*
|
||||
* Exact prototype of time()
|
||||
*
|
||||
* time_t time(time *t);
|
||||
*
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_time)
|
||||
cvdso_call_time __c_kernel_time
|
||||
V_FUNCTION_END(__kernel_time)
|
@ -1 +0,0 @@
|
||||
#include "../vdso32/note.S"
|
@ -1,29 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Powerpc userspace implementations of gettimeofday() and similar.
|
||||
*/
|
||||
#include <linux/time.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
int __c_kernel_clock_gettime(clockid_t clock, struct __kernel_timespec *ts,
|
||||
const struct vdso_data *vd)
|
||||
{
|
||||
return __cvdso_clock_gettime_data(vd, clock, ts);
|
||||
}
|
||||
|
||||
int __c_kernel_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz,
|
||||
const struct vdso_data *vd)
|
||||
{
|
||||
return __cvdso_gettimeofday_data(vd, tv, tz);
|
||||
}
|
||||
|
||||
int __c_kernel_clock_getres(clockid_t clock_id, struct __kernel_timespec *res,
|
||||
const struct vdso_data *vd)
|
||||
{
|
||||
return __cvdso_clock_getres_data(vd, clock_id, res);
|
||||
}
|
||||
|
||||
__kernel_old_time_t __c_kernel_time(__kernel_old_time_t *time, const struct vdso_data *vd)
|
||||
{
|
||||
return __cvdso_time_data(vd, time);
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
.globl vdso64_start, vdso64_end
|
||||
.balign PAGE_SIZE
|
||||
vdso64_start:
|
||||
.incbin "arch/powerpc/kernel/vdso64/vdso64.so.dbg"
|
||||
.incbin "arch/powerpc/kernel/vdso/vdso64.so.dbg"
|
||||
.balign PAGE_SIZE
|
||||
vdso64_end:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user