aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDaniel Borkmann <dborkman@redhat.com>2014-05-26 14:17:34 -0400
committerDavid S. Miller <davem@davemloft.net>2014-05-30 19:27:39 -0400
commit108cc22a93e1843e728b9753442429c71f48f9e4 (patch)
tree0e6eb0fa8b79c3a11676ff042bacd2e8d8d6dffa /lib
parentc4438f03ca439daa349d93d7102ed36422dfcd7f (diff)
net: filter: test fill/spill of all M[] regs
This test for classic BPF probes stores and load combination via X on all 16 registers of the scratch memory store. It initially loads integer 100 and passes this value around to each register while incrementing it every time, thus we expect to have 116 as a result. Might be useful for JIT testing. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/test_bpf.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c
index af677cb718f5..6be9119c60f1 100644
--- a/lib/test_bpf.c
+++ b/lib/test_bpf.c
@@ -1485,6 +1485,96 @@ static struct bpf_test tests[] = {
1485 { }, 1485 { },
1486 { }, 1486 { },
1487 }, 1487 },
1488 { /* Mainly checking JIT here. */
1489 "M[]: STX + LDX",
1490 .u.insns = {
1491 BPF_STMT(BPF_LDX | BPF_IMM, 100),
1492 BPF_STMT(BPF_STX, 0),
1493 BPF_STMT(BPF_LDX | BPF_MEM, 0),
1494 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1495 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1496 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1497 BPF_STMT(BPF_STX, 1),
1498 BPF_STMT(BPF_LDX | BPF_MEM, 1),
1499 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1500 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1501 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1502 BPF_STMT(BPF_STX, 2),
1503 BPF_STMT(BPF_LDX | BPF_MEM, 2),
1504 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1505 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1506 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1507 BPF_STMT(BPF_STX, 3),
1508 BPF_STMT(BPF_LDX | BPF_MEM, 3),
1509 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1510 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1511 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1512 BPF_STMT(BPF_STX, 4),
1513 BPF_STMT(BPF_LDX | BPF_MEM, 4),
1514 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1515 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1516 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1517 BPF_STMT(BPF_STX, 5),
1518 BPF_STMT(BPF_LDX | BPF_MEM, 5),
1519 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1520 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1521 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1522 BPF_STMT(BPF_STX, 6),
1523 BPF_STMT(BPF_LDX | BPF_MEM, 6),
1524 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1525 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1526 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1527 BPF_STMT(BPF_STX, 7),
1528 BPF_STMT(BPF_LDX | BPF_MEM, 7),
1529 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1530 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1531 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1532 BPF_STMT(BPF_STX, 8),
1533 BPF_STMT(BPF_LDX | BPF_MEM, 8),
1534 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1535 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1536 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1537 BPF_STMT(BPF_STX, 9),
1538 BPF_STMT(BPF_LDX | BPF_MEM, 9),
1539 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1540 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1541 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1542 BPF_STMT(BPF_STX, 10),
1543 BPF_STMT(BPF_LDX | BPF_MEM, 10),
1544 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1545 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1546 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1547 BPF_STMT(BPF_STX, 11),
1548 BPF_STMT(BPF_LDX | BPF_MEM, 11),
1549 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1550 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1551 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1552 BPF_STMT(BPF_STX, 12),
1553 BPF_STMT(BPF_LDX | BPF_MEM, 12),
1554 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1555 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1556 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1557 BPF_STMT(BPF_STX, 13),
1558 BPF_STMT(BPF_LDX | BPF_MEM, 13),
1559 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1560 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1561 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1562 BPF_STMT(BPF_STX, 14),
1563 BPF_STMT(BPF_LDX | BPF_MEM, 14),
1564 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1565 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1566 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1567 BPF_STMT(BPF_STX, 15),
1568 BPF_STMT(BPF_LDX | BPF_MEM, 15),
1569 BPF_STMT(BPF_MISC | BPF_TXA, 0),
1570 BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
1571 BPF_STMT(BPF_MISC | BPF_TAX, 0),
1572 BPF_STMT(BPF_RET | BPF_A, 0),
1573 },
1574 CLASSIC | FLAG_NO_DATA,
1575 { },
1576 { { 0, 116 } },
1577 },
1488}; 1578};
1489 1579
1490static struct net_device dev; 1580static struct net_device dev;