Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 279795
b: refs/heads/master
c: c41584d
h: refs/heads/master
i:
  279793: 20f9f29
  279791: 3c1c975
v: v3
  • Loading branch information
Leif Lindholm authored and Russell King committed Dec 13, 2011
1 parent c7ea25c commit 431f590
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 60 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c245dcd326fb9f8cca4b396796f0d2e54171b5c9
refs/heads/master: c41584ddc1b9c7d06726057456d188d4eefec60b
66 changes: 7 additions & 59 deletions trunk/arch/arm/kernel/kprobes-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,8 @@
#include <linux/slab.h>
#include <linux/kprobes.h>

#include <asm/opcodes.h>

#include "kprobes.h"
#include "kprobes-test.h"

Expand Down Expand Up @@ -1050,65 +1052,9 @@ static int test_instance;

static unsigned long test_check_cc(int cc, unsigned long cpsr)
{
unsigned long temp;

switch (cc) {
case 0x0: /* eq */
return cpsr & PSR_Z_BIT;

case 0x1: /* ne */
return (~cpsr) & PSR_Z_BIT;

case 0x2: /* cs */
return cpsr & PSR_C_BIT;

case 0x3: /* cc */
return (~cpsr) & PSR_C_BIT;

case 0x4: /* mi */
return cpsr & PSR_N_BIT;

case 0x5: /* pl */
return (~cpsr) & PSR_N_BIT;

case 0x6: /* vs */
return cpsr & PSR_V_BIT;

case 0x7: /* vc */
return (~cpsr) & PSR_V_BIT;
int ret = arm_check_condition(cc << 28, cpsr);

case 0x8: /* hi */
cpsr &= ~(cpsr >> 1); /* PSR_C_BIT &= ~PSR_Z_BIT */
return cpsr & PSR_C_BIT;

case 0x9: /* ls */
cpsr &= ~(cpsr >> 1); /* PSR_C_BIT &= ~PSR_Z_BIT */
return (~cpsr) & PSR_C_BIT;

case 0xa: /* ge */
cpsr ^= (cpsr << 3); /* PSR_N_BIT ^= PSR_V_BIT */
return (~cpsr) & PSR_N_BIT;

case 0xb: /* lt */
cpsr ^= (cpsr << 3); /* PSR_N_BIT ^= PSR_V_BIT */
return cpsr & PSR_N_BIT;

case 0xc: /* gt */
temp = cpsr ^ (cpsr << 3); /* PSR_N_BIT ^= PSR_V_BIT */
temp |= (cpsr << 1); /* PSR_N_BIT |= PSR_Z_BIT */
return (~temp) & PSR_N_BIT;

case 0xd: /* le */
temp = cpsr ^ (cpsr << 3); /* PSR_N_BIT ^= PSR_V_BIT */
temp |= (cpsr << 1); /* PSR_N_BIT |= PSR_Z_BIT */
return temp & PSR_N_BIT;

case 0xe: /* al */
case 0xf: /* unconditional */
return true;
}
BUG();
return false;
return (ret != ARM_OPCODE_CONDTEST_FAIL);
}

static int is_last_scenario;
Expand All @@ -1128,7 +1074,9 @@ static unsigned long test_context_cpsr(int scenario)

if (!test_case_is_thumb) {
/* Testing ARM code */
probe_should_run = test_check_cc(current_instruction >> 28, cpsr) != 0;
int cc = current_instruction >> 28;

probe_should_run = test_check_cc(cc, cpsr) != 0;
if (scenario == 15)
is_last_scenario = true;

Expand Down

0 comments on commit 431f590

Please sign in to comment.