lkml.org 
[lkml]   [2022]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 04/14] perf test: Add asm pureloop test tool
    Date
    From: Carsten Haitzler <carsten.haitzler@arm.com>

    Add test tool to be driven by further test scripts. This tool is pure
    arm64 ASM with no libc usage to ensure it is the same exact
    binary/code every time so it can also be re-used for many uses. It
    just loops for a given fixed number of loops.

    Signed-off-by: Carsten Haitzler <carsten.haitzler@arm.com>
    ---
    tools/perf/tests/shell/coresight/Makefile | 3 +-
    .../shell/coresight/asm_pure_loop/.gitignore | 1 +
    .../shell/coresight/asm_pure_loop/Makefile | 34 +++++++++++++++++++
    .../coresight/asm_pure_loop/asm_pure_loop.S | 28 +++++++++++++++
    4 files changed, 65 insertions(+), 1 deletion(-)
    create mode 100644 tools/perf/tests/shell/coresight/asm_pure_loop/.gitignore
    create mode 100644 tools/perf/tests/shell/coresight/asm_pure_loop/Makefile
    create mode 100644 tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S

    diff --git a/tools/perf/tests/shell/coresight/Makefile b/tools/perf/tests/shell/coresight/Makefile
    index 3b816bb4ced3..d4f868d55773 100644
    --- a/tools/perf/tests/shell/coresight/Makefile
    +++ b/tools/perf/tests/shell/coresight/Makefile
    @@ -4,7 +4,8 @@ include ../../../../../tools/scripts/Makefile.include
    include ../../../../../tools/scripts/Makefile.arch
    include ../../../../../tools/scripts/utilities.mak

    -SUBDIRS =
    +SUBDIRS = \
    + asm_pure_loop

    all: $(SUBDIRS)
    $(SUBDIRS):
    diff --git a/tools/perf/tests/shell/coresight/asm_pure_loop/.gitignore b/tools/perf/tests/shell/coresight/asm_pure_loop/.gitignore
    new file mode 100644
    index 000000000000..468673ac32e8
    --- /dev/null
    +++ b/tools/perf/tests/shell/coresight/asm_pure_loop/.gitignore
    @@ -0,0 +1 @@
    +asm_pure_loop
    diff --git a/tools/perf/tests/shell/coresight/asm_pure_loop/Makefile b/tools/perf/tests/shell/coresight/asm_pure_loop/Makefile
    new file mode 100644
    index 000000000000..206849e92bc9
    --- /dev/null
    +++ b/tools/perf/tests/shell/coresight/asm_pure_loop/Makefile
    @@ -0,0 +1,34 @@
    +# SPDX-License-Identifier: GPL-2.0
    +# Carsten Haitzler <carsten.haitzler@arm.com>, 2021
    +
    +include ../Makefile.miniconfig
    +
    +# Binary to produce
    +BIN=asm_pure_loop
    +# Any linking/libraries needed for the binary - empty if none needed
    +LIB=
    +
    +all: $(BIN)
    +
    +$(BIN): $(BIN).S
    +ifdef CORESIGHT
    +ifeq ($(ARCH),arm64)
    +# Build line - this is raw asm with no libc to have an always exact binary
    + $(Q)$(CC) $(BIN).S -nostdlib -static -o $(BIN) $(LIB)
    +endif
    +endif
    +
    +install-tests: all
    +ifdef CORESIGHT
    +ifeq ($(ARCH),arm64)
    +# Install the test tool in the right place
    + $(call QUIET_INSTALL, tests) \
    + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/$(INSTDIR_SUB)/$(BIN)'; \
    + $(INSTALL) $(BIN) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/$(INSTDIR_SUB)/$(BIN)/$(BIN)'
    +endif
    +endif
    +
    +clean:
    + $(Q)$(RM) -f $(BIN)
    +
    +.PHONY: all clean install-tests
    diff --git a/tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S b/tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S
    new file mode 100644
    index 000000000000..75cf084a927d
    --- /dev/null
    +++ b/tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S
    @@ -0,0 +1,28 @@
    +/* SPDX-License-Identifier: GPL-2.0 */
    +/* Tamas Zsoldos <tamas.zsoldos@arm.com>, 2021 */
    +
    +.globl _start
    +_start:
    + mov x0, 0x0000ffff
    + mov x1, xzr
    +loop:
    + nop
    + nop
    + cbnz x1, noskip
    + nop
    + nop
    + adrp x2, skip
    + add x2, x2, :lo12:skip
    + br x2
    + nop
    + nop
    +noskip:
    + nop
    + nop
    +skip:
    + sub x0, x0, 1
    + cbnz x0, loop
    +
    + mov x0, #0
    + mov x8, #93 // __NR_exit syscall
    + svc #0
    --
    2.32.0
    \
     
     \ /
      Last update: 2022-08-12 14:18    [W:3.192 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site