Skip to content

Commit

Permalink
selftests/powerpc: Consolidate copy/paste test logic
Browse files Browse the repository at this point in the history
This logic was shared between multiple tests, but now that we have
removed all but one of them we can just move it into that test.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Michael Ellerman committed Jul 20, 2018
1 parent 525661e commit dbc3f77
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 82 deletions.
1 change: 0 additions & 1 deletion tools/testing/selftests/powerpc/alignment/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
copy_first_unaligned
copy_paste_unaligned_common
alignment_handler
2 changes: 1 addition & 1 deletion tools/testing/selftests/powerpc/alignment/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ TEST_GEN_PROGS := copy_first_unaligned alignment_handler

include ../../lib.mk

$(TEST_GEN_PROGS): ../harness.c ../utils.c copy_paste_unaligned_common.c
$(TEST_GEN_PROGS): ../harness.c ../utils.c
33 changes: 32 additions & 1 deletion tools/testing/selftests/powerpc/alignment/copy_first_unaligned.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,46 @@
*
*/

#include <signal.h>
#include <string.h>
#include <unistd.h>
#include "utils.h"
#include "instructions.h"
#include "copy_paste_unaligned_common.h"

unsigned int expected_instruction = PPC_INST_COPY_FIRST;
unsigned int instruction_mask = 0xfc2007fe;

void signal_action_handler(int signal_num, siginfo_t *info, void *ptr)
{
ucontext_t *ctx = ptr;
#ifdef __powerpc64__
unsigned int *pc = (unsigned int *)ctx->uc_mcontext.gp_regs[PT_NIP];
#else
unsigned int *pc = (unsigned int *)ctx->uc_mcontext.uc_regs->gregs[PT_NIP];
#endif

/*
* Check that the signal was on the correct instruction, using a
* mask because the compiler assigns the register at RB.
*/
if ((*pc & instruction_mask) == expected_instruction)
_exit(0); /* We hit the right instruction */

_exit(1);
}

void setup_signal_handler(void)
{
struct sigaction signal_action;

memset(&signal_action, 0, sizeof(signal_action));
signal_action.sa_sigaction = signal_action_handler;
signal_action.sa_flags = SA_SIGINFO;
sigaction(SIGBUS, &signal_action, NULL);
}

char cacheline_buf[128] __cacheline_aligned;

int test_copy_first_unaligned(void)
{
/* Only run this test on a P9 or later */
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit dbc3f77

Please sign in to comment.