18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci#include <stdio.h> 38c2ecf20Sopenharmony_ci#include <byteswap.h> 48c2ecf20Sopenharmony_ci#include "utils.h" 58c2ecf20Sopenharmony_ci#include "subunit.h" 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 88c2ecf20Sopenharmony_ci#define cpu_to_be32(x) bswap_32(x) 98c2ecf20Sopenharmony_ci#define be32_to_cpu(x) bswap_32(x) 108c2ecf20Sopenharmony_ci#define be16_to_cpup(x) bswap_16(*x) 118c2ecf20Sopenharmony_ci#define cpu_to_be64(x) bswap_64(x) 128c2ecf20Sopenharmony_ci#else 138c2ecf20Sopenharmony_ci#define cpu_to_be32(x) (x) 148c2ecf20Sopenharmony_ci#define be32_to_cpu(x) (x) 158c2ecf20Sopenharmony_ci#define be16_to_cpup(x) (*x) 168c2ecf20Sopenharmony_ci#define cpu_to_be64(x) (x) 178c2ecf20Sopenharmony_ci#endif 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#include "vphn.c" 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_cistatic struct test { 228c2ecf20Sopenharmony_ci char *descr; 238c2ecf20Sopenharmony_ci long input[VPHN_REGISTER_COUNT]; 248c2ecf20Sopenharmony_ci u32 expected[VPHN_ASSOC_BUFSIZE]; 258c2ecf20Sopenharmony_ci} all_tests[] = { 268c2ecf20Sopenharmony_ci { 278c2ecf20Sopenharmony_ci "vphn: no data", 288c2ecf20Sopenharmony_ci { 298c2ecf20Sopenharmony_ci 0xffffffffffffffff, 308c2ecf20Sopenharmony_ci 0xffffffffffffffff, 318c2ecf20Sopenharmony_ci 0xffffffffffffffff, 328c2ecf20Sopenharmony_ci 0xffffffffffffffff, 338c2ecf20Sopenharmony_ci 0xffffffffffffffff, 348c2ecf20Sopenharmony_ci 0xffffffffffffffff, 358c2ecf20Sopenharmony_ci }, 368c2ecf20Sopenharmony_ci { 378c2ecf20Sopenharmony_ci 0x00000000 388c2ecf20Sopenharmony_ci } 398c2ecf20Sopenharmony_ci }, 408c2ecf20Sopenharmony_ci { 418c2ecf20Sopenharmony_ci "vphn: 1 x 16-bit value", 428c2ecf20Sopenharmony_ci { 438c2ecf20Sopenharmony_ci 0x8001ffffffffffff, 448c2ecf20Sopenharmony_ci 0xffffffffffffffff, 458c2ecf20Sopenharmony_ci 0xffffffffffffffff, 468c2ecf20Sopenharmony_ci 0xffffffffffffffff, 478c2ecf20Sopenharmony_ci 0xffffffffffffffff, 488c2ecf20Sopenharmony_ci 0xffffffffffffffff, 498c2ecf20Sopenharmony_ci }, 508c2ecf20Sopenharmony_ci { 518c2ecf20Sopenharmony_ci 0x00000001, 528c2ecf20Sopenharmony_ci 0x00000001 538c2ecf20Sopenharmony_ci } 548c2ecf20Sopenharmony_ci }, 558c2ecf20Sopenharmony_ci { 568c2ecf20Sopenharmony_ci "vphn: 2 x 16-bit values", 578c2ecf20Sopenharmony_ci { 588c2ecf20Sopenharmony_ci 0x80018002ffffffff, 598c2ecf20Sopenharmony_ci 0xffffffffffffffff, 608c2ecf20Sopenharmony_ci 0xffffffffffffffff, 618c2ecf20Sopenharmony_ci 0xffffffffffffffff, 628c2ecf20Sopenharmony_ci 0xffffffffffffffff, 638c2ecf20Sopenharmony_ci 0xffffffffffffffff, 648c2ecf20Sopenharmony_ci }, 658c2ecf20Sopenharmony_ci { 668c2ecf20Sopenharmony_ci 0x00000002, 678c2ecf20Sopenharmony_ci 0x00000001, 688c2ecf20Sopenharmony_ci 0x00000002 698c2ecf20Sopenharmony_ci } 708c2ecf20Sopenharmony_ci }, 718c2ecf20Sopenharmony_ci { 728c2ecf20Sopenharmony_ci "vphn: 3 x 16-bit values", 738c2ecf20Sopenharmony_ci { 748c2ecf20Sopenharmony_ci 0x800180028003ffff, 758c2ecf20Sopenharmony_ci 0xffffffffffffffff, 768c2ecf20Sopenharmony_ci 0xffffffffffffffff, 778c2ecf20Sopenharmony_ci 0xffffffffffffffff, 788c2ecf20Sopenharmony_ci 0xffffffffffffffff, 798c2ecf20Sopenharmony_ci 0xffffffffffffffff, 808c2ecf20Sopenharmony_ci }, 818c2ecf20Sopenharmony_ci { 828c2ecf20Sopenharmony_ci 0x00000003, 838c2ecf20Sopenharmony_ci 0x00000001, 848c2ecf20Sopenharmony_ci 0x00000002, 858c2ecf20Sopenharmony_ci 0x00000003 868c2ecf20Sopenharmony_ci } 878c2ecf20Sopenharmony_ci }, 888c2ecf20Sopenharmony_ci { 898c2ecf20Sopenharmony_ci "vphn: 4 x 16-bit values", 908c2ecf20Sopenharmony_ci { 918c2ecf20Sopenharmony_ci 0x8001800280038004, 928c2ecf20Sopenharmony_ci 0xffffffffffffffff, 938c2ecf20Sopenharmony_ci 0xffffffffffffffff, 948c2ecf20Sopenharmony_ci 0xffffffffffffffff, 958c2ecf20Sopenharmony_ci 0xffffffffffffffff, 968c2ecf20Sopenharmony_ci 0xffffffffffffffff, 978c2ecf20Sopenharmony_ci }, 988c2ecf20Sopenharmony_ci { 998c2ecf20Sopenharmony_ci 0x00000004, 1008c2ecf20Sopenharmony_ci 0x00000001, 1018c2ecf20Sopenharmony_ci 0x00000002, 1028c2ecf20Sopenharmony_ci 0x00000003, 1038c2ecf20Sopenharmony_ci 0x00000004 1048c2ecf20Sopenharmony_ci } 1058c2ecf20Sopenharmony_ci }, 1068c2ecf20Sopenharmony_ci { 1078c2ecf20Sopenharmony_ci /* Parsing the next 16-bit value out of the next 64-bit input 1088c2ecf20Sopenharmony_ci * value. 1098c2ecf20Sopenharmony_ci */ 1108c2ecf20Sopenharmony_ci "vphn: 5 x 16-bit values", 1118c2ecf20Sopenharmony_ci { 1128c2ecf20Sopenharmony_ci 0x8001800280038004, 1138c2ecf20Sopenharmony_ci 0x8005ffffffffffff, 1148c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1158c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1168c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1178c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1188c2ecf20Sopenharmony_ci }, 1198c2ecf20Sopenharmony_ci { 1208c2ecf20Sopenharmony_ci 0x00000005, 1218c2ecf20Sopenharmony_ci 0x00000001, 1228c2ecf20Sopenharmony_ci 0x00000002, 1238c2ecf20Sopenharmony_ci 0x00000003, 1248c2ecf20Sopenharmony_ci 0x00000004, 1258c2ecf20Sopenharmony_ci 0x00000005 1268c2ecf20Sopenharmony_ci } 1278c2ecf20Sopenharmony_ci }, 1288c2ecf20Sopenharmony_ci { 1298c2ecf20Sopenharmony_ci /* Parse at most 6 x 64-bit input values */ 1308c2ecf20Sopenharmony_ci "vphn: 24 x 16-bit values", 1318c2ecf20Sopenharmony_ci { 1328c2ecf20Sopenharmony_ci 0x8001800280038004, 1338c2ecf20Sopenharmony_ci 0x8005800680078008, 1348c2ecf20Sopenharmony_ci 0x8009800a800b800c, 1358c2ecf20Sopenharmony_ci 0x800d800e800f8010, 1368c2ecf20Sopenharmony_ci 0x8011801280138014, 1378c2ecf20Sopenharmony_ci 0x8015801680178018 1388c2ecf20Sopenharmony_ci }, 1398c2ecf20Sopenharmony_ci { 1408c2ecf20Sopenharmony_ci 0x00000018, 1418c2ecf20Sopenharmony_ci 0x00000001, 1428c2ecf20Sopenharmony_ci 0x00000002, 1438c2ecf20Sopenharmony_ci 0x00000003, 1448c2ecf20Sopenharmony_ci 0x00000004, 1458c2ecf20Sopenharmony_ci 0x00000005, 1468c2ecf20Sopenharmony_ci 0x00000006, 1478c2ecf20Sopenharmony_ci 0x00000007, 1488c2ecf20Sopenharmony_ci 0x00000008, 1498c2ecf20Sopenharmony_ci 0x00000009, 1508c2ecf20Sopenharmony_ci 0x0000000a, 1518c2ecf20Sopenharmony_ci 0x0000000b, 1528c2ecf20Sopenharmony_ci 0x0000000c, 1538c2ecf20Sopenharmony_ci 0x0000000d, 1548c2ecf20Sopenharmony_ci 0x0000000e, 1558c2ecf20Sopenharmony_ci 0x0000000f, 1568c2ecf20Sopenharmony_ci 0x00000010, 1578c2ecf20Sopenharmony_ci 0x00000011, 1588c2ecf20Sopenharmony_ci 0x00000012, 1598c2ecf20Sopenharmony_ci 0x00000013, 1608c2ecf20Sopenharmony_ci 0x00000014, 1618c2ecf20Sopenharmony_ci 0x00000015, 1628c2ecf20Sopenharmony_ci 0x00000016, 1638c2ecf20Sopenharmony_ci 0x00000017, 1648c2ecf20Sopenharmony_ci 0x00000018 1658c2ecf20Sopenharmony_ci } 1668c2ecf20Sopenharmony_ci }, 1678c2ecf20Sopenharmony_ci { 1688c2ecf20Sopenharmony_ci "vphn: 1 x 32-bit value", 1698c2ecf20Sopenharmony_ci { 1708c2ecf20Sopenharmony_ci 0x00000001ffffffff, 1718c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1728c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1738c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1748c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1758c2ecf20Sopenharmony_ci 0xffffffffffffffff 1768c2ecf20Sopenharmony_ci }, 1778c2ecf20Sopenharmony_ci { 1788c2ecf20Sopenharmony_ci 0x00000001, 1798c2ecf20Sopenharmony_ci 0x00000001 1808c2ecf20Sopenharmony_ci } 1818c2ecf20Sopenharmony_ci }, 1828c2ecf20Sopenharmony_ci { 1838c2ecf20Sopenharmony_ci "vphn: 2 x 32-bit values", 1848c2ecf20Sopenharmony_ci { 1858c2ecf20Sopenharmony_ci 0x0000000100000002, 1868c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1878c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1888c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1898c2ecf20Sopenharmony_ci 0xffffffffffffffff, 1908c2ecf20Sopenharmony_ci 0xffffffffffffffff 1918c2ecf20Sopenharmony_ci }, 1928c2ecf20Sopenharmony_ci { 1938c2ecf20Sopenharmony_ci 0x00000002, 1948c2ecf20Sopenharmony_ci 0x00000001, 1958c2ecf20Sopenharmony_ci 0x00000002 1968c2ecf20Sopenharmony_ci } 1978c2ecf20Sopenharmony_ci }, 1988c2ecf20Sopenharmony_ci { 1998c2ecf20Sopenharmony_ci /* Parsing the next 32-bit value out of the next 64-bit input 2008c2ecf20Sopenharmony_ci * value. 2018c2ecf20Sopenharmony_ci */ 2028c2ecf20Sopenharmony_ci "vphn: 3 x 32-bit values", 2038c2ecf20Sopenharmony_ci { 2048c2ecf20Sopenharmony_ci 0x0000000100000002, 2058c2ecf20Sopenharmony_ci 0x00000003ffffffff, 2068c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2078c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2088c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2098c2ecf20Sopenharmony_ci 0xffffffffffffffff 2108c2ecf20Sopenharmony_ci }, 2118c2ecf20Sopenharmony_ci { 2128c2ecf20Sopenharmony_ci 0x00000003, 2138c2ecf20Sopenharmony_ci 0x00000001, 2148c2ecf20Sopenharmony_ci 0x00000002, 2158c2ecf20Sopenharmony_ci 0x00000003 2168c2ecf20Sopenharmony_ci } 2178c2ecf20Sopenharmony_ci }, 2188c2ecf20Sopenharmony_ci { 2198c2ecf20Sopenharmony_ci /* Parse at most 6 x 64-bit input values */ 2208c2ecf20Sopenharmony_ci "vphn: 12 x 32-bit values", 2218c2ecf20Sopenharmony_ci { 2228c2ecf20Sopenharmony_ci 0x0000000100000002, 2238c2ecf20Sopenharmony_ci 0x0000000300000004, 2248c2ecf20Sopenharmony_ci 0x0000000500000006, 2258c2ecf20Sopenharmony_ci 0x0000000700000008, 2268c2ecf20Sopenharmony_ci 0x000000090000000a, 2278c2ecf20Sopenharmony_ci 0x0000000b0000000c 2288c2ecf20Sopenharmony_ci }, 2298c2ecf20Sopenharmony_ci { 2308c2ecf20Sopenharmony_ci 0x0000000c, 2318c2ecf20Sopenharmony_ci 0x00000001, 2328c2ecf20Sopenharmony_ci 0x00000002, 2338c2ecf20Sopenharmony_ci 0x00000003, 2348c2ecf20Sopenharmony_ci 0x00000004, 2358c2ecf20Sopenharmony_ci 0x00000005, 2368c2ecf20Sopenharmony_ci 0x00000006, 2378c2ecf20Sopenharmony_ci 0x00000007, 2388c2ecf20Sopenharmony_ci 0x00000008, 2398c2ecf20Sopenharmony_ci 0x00000009, 2408c2ecf20Sopenharmony_ci 0x0000000a, 2418c2ecf20Sopenharmony_ci 0x0000000b, 2428c2ecf20Sopenharmony_ci 0x0000000c 2438c2ecf20Sopenharmony_ci } 2448c2ecf20Sopenharmony_ci }, 2458c2ecf20Sopenharmony_ci { 2468c2ecf20Sopenharmony_ci "vphn: 16-bit value followed by 32-bit value", 2478c2ecf20Sopenharmony_ci { 2488c2ecf20Sopenharmony_ci 0x800100000002ffff, 2498c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2508c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2518c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2528c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2538c2ecf20Sopenharmony_ci 0xffffffffffffffff 2548c2ecf20Sopenharmony_ci }, 2558c2ecf20Sopenharmony_ci { 2568c2ecf20Sopenharmony_ci 0x00000002, 2578c2ecf20Sopenharmony_ci 0x00000001, 2588c2ecf20Sopenharmony_ci 0x00000002 2598c2ecf20Sopenharmony_ci } 2608c2ecf20Sopenharmony_ci }, 2618c2ecf20Sopenharmony_ci { 2628c2ecf20Sopenharmony_ci "vphn: 32-bit value followed by 16-bit value", 2638c2ecf20Sopenharmony_ci { 2648c2ecf20Sopenharmony_ci 0x000000018002ffff, 2658c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2668c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2678c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2688c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2698c2ecf20Sopenharmony_ci 0xffffffffffffffff 2708c2ecf20Sopenharmony_ci }, 2718c2ecf20Sopenharmony_ci { 2728c2ecf20Sopenharmony_ci 0x00000002, 2738c2ecf20Sopenharmony_ci 0x00000001, 2748c2ecf20Sopenharmony_ci 0x00000002 2758c2ecf20Sopenharmony_ci } 2768c2ecf20Sopenharmony_ci }, 2778c2ecf20Sopenharmony_ci { 2788c2ecf20Sopenharmony_ci /* Parse a 32-bit value split accross two consecutives 64-bit 2798c2ecf20Sopenharmony_ci * input values. 2808c2ecf20Sopenharmony_ci */ 2818c2ecf20Sopenharmony_ci "vphn: 16-bit value followed by 2 x 32-bit values", 2828c2ecf20Sopenharmony_ci { 2838c2ecf20Sopenharmony_ci 0x8001000000020000, 2848c2ecf20Sopenharmony_ci 0x0003ffffffffffff, 2858c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2868c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2878c2ecf20Sopenharmony_ci 0xffffffffffffffff, 2888c2ecf20Sopenharmony_ci 0xffffffffffffffff 2898c2ecf20Sopenharmony_ci }, 2908c2ecf20Sopenharmony_ci { 2918c2ecf20Sopenharmony_ci 0x00000003, 2928c2ecf20Sopenharmony_ci 0x00000001, 2938c2ecf20Sopenharmony_ci 0x00000002, 2948c2ecf20Sopenharmony_ci 0x00000003, 2958c2ecf20Sopenharmony_ci 0x00000004, 2968c2ecf20Sopenharmony_ci 0x00000005 2978c2ecf20Sopenharmony_ci } 2988c2ecf20Sopenharmony_ci }, 2998c2ecf20Sopenharmony_ci { 3008c2ecf20Sopenharmony_ci /* The lower bits in 0x0001ffff don't get mixed up with the 3018c2ecf20Sopenharmony_ci * 0xffff terminator. 3028c2ecf20Sopenharmony_ci */ 3038c2ecf20Sopenharmony_ci "vphn: 32-bit value has all ones in 16 lower bits", 3048c2ecf20Sopenharmony_ci { 3058c2ecf20Sopenharmony_ci 0x0001ffff80028003, 3068c2ecf20Sopenharmony_ci 0xffffffffffffffff, 3078c2ecf20Sopenharmony_ci 0xffffffffffffffff, 3088c2ecf20Sopenharmony_ci 0xffffffffffffffff, 3098c2ecf20Sopenharmony_ci 0xffffffffffffffff, 3108c2ecf20Sopenharmony_ci 0xffffffffffffffff 3118c2ecf20Sopenharmony_ci }, 3128c2ecf20Sopenharmony_ci { 3138c2ecf20Sopenharmony_ci 0x00000003, 3148c2ecf20Sopenharmony_ci 0x0001ffff, 3158c2ecf20Sopenharmony_ci 0x00000002, 3168c2ecf20Sopenharmony_ci 0x00000003 3178c2ecf20Sopenharmony_ci } 3188c2ecf20Sopenharmony_ci }, 3198c2ecf20Sopenharmony_ci { 3208c2ecf20Sopenharmony_ci /* The following input doesn't follow the specification. 3218c2ecf20Sopenharmony_ci */ 3228c2ecf20Sopenharmony_ci "vphn: last 32-bit value is truncated", 3238c2ecf20Sopenharmony_ci { 3248c2ecf20Sopenharmony_ci 0x0000000100000002, 3258c2ecf20Sopenharmony_ci 0x0000000300000004, 3268c2ecf20Sopenharmony_ci 0x0000000500000006, 3278c2ecf20Sopenharmony_ci 0x0000000700000008, 3288c2ecf20Sopenharmony_ci 0x000000090000000a, 3298c2ecf20Sopenharmony_ci 0x0000000b800c2bad 3308c2ecf20Sopenharmony_ci }, 3318c2ecf20Sopenharmony_ci { 3328c2ecf20Sopenharmony_ci 0x0000000c, 3338c2ecf20Sopenharmony_ci 0x00000001, 3348c2ecf20Sopenharmony_ci 0x00000002, 3358c2ecf20Sopenharmony_ci 0x00000003, 3368c2ecf20Sopenharmony_ci 0x00000004, 3378c2ecf20Sopenharmony_ci 0x00000005, 3388c2ecf20Sopenharmony_ci 0x00000006, 3398c2ecf20Sopenharmony_ci 0x00000007, 3408c2ecf20Sopenharmony_ci 0x00000008, 3418c2ecf20Sopenharmony_ci 0x00000009, 3428c2ecf20Sopenharmony_ci 0x0000000a, 3438c2ecf20Sopenharmony_ci 0x0000000b, 3448c2ecf20Sopenharmony_ci 0x0000000c 3458c2ecf20Sopenharmony_ci } 3468c2ecf20Sopenharmony_ci }, 3478c2ecf20Sopenharmony_ci { 3488c2ecf20Sopenharmony_ci "vphn: garbage after terminator", 3498c2ecf20Sopenharmony_ci { 3508c2ecf20Sopenharmony_ci 0xffff2bad2bad2bad, 3518c2ecf20Sopenharmony_ci 0x2bad2bad2bad2bad, 3528c2ecf20Sopenharmony_ci 0x2bad2bad2bad2bad, 3538c2ecf20Sopenharmony_ci 0x2bad2bad2bad2bad, 3548c2ecf20Sopenharmony_ci 0x2bad2bad2bad2bad, 3558c2ecf20Sopenharmony_ci 0x2bad2bad2bad2bad 3568c2ecf20Sopenharmony_ci }, 3578c2ecf20Sopenharmony_ci { 3588c2ecf20Sopenharmony_ci 0x00000000 3598c2ecf20Sopenharmony_ci } 3608c2ecf20Sopenharmony_ci }, 3618c2ecf20Sopenharmony_ci { 3628c2ecf20Sopenharmony_ci NULL 3638c2ecf20Sopenharmony_ci } 3648c2ecf20Sopenharmony_ci}; 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_cistatic int test_one(struct test *test) 3678c2ecf20Sopenharmony_ci{ 3688c2ecf20Sopenharmony_ci __be32 output[VPHN_ASSOC_BUFSIZE] = { 0 }; 3698c2ecf20Sopenharmony_ci int i, len; 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ci vphn_unpack_associativity(test->input, output); 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ci len = be32_to_cpu(output[0]); 3748c2ecf20Sopenharmony_ci if (len != test->expected[0]) { 3758c2ecf20Sopenharmony_ci printf("expected %d elements, got %d\n", test->expected[0], 3768c2ecf20Sopenharmony_ci len); 3778c2ecf20Sopenharmony_ci return 1; 3788c2ecf20Sopenharmony_ci } 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_ci for (i = 1; i < len; i++) { 3818c2ecf20Sopenharmony_ci u32 val = be32_to_cpu(output[i]); 3828c2ecf20Sopenharmony_ci if (val != test->expected[i]) { 3838c2ecf20Sopenharmony_ci printf("element #%d is 0x%x, should be 0x%x\n", i, val, 3848c2ecf20Sopenharmony_ci test->expected[i]); 3858c2ecf20Sopenharmony_ci return 1; 3868c2ecf20Sopenharmony_ci } 3878c2ecf20Sopenharmony_ci } 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_ci return 0; 3908c2ecf20Sopenharmony_ci} 3918c2ecf20Sopenharmony_ci 3928c2ecf20Sopenharmony_cistatic int test_vphn(void) 3938c2ecf20Sopenharmony_ci{ 3948c2ecf20Sopenharmony_ci static struct test *test; 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ci for (test = all_tests; test->descr; test++) { 3978c2ecf20Sopenharmony_ci int ret; 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_ci ret = test_one(test); 4008c2ecf20Sopenharmony_ci test_finish(test->descr, ret); 4018c2ecf20Sopenharmony_ci if (ret) 4028c2ecf20Sopenharmony_ci return ret; 4038c2ecf20Sopenharmony_ci } 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci return 0; 4068c2ecf20Sopenharmony_ci} 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ciint main(int argc, char **argv) 4098c2ecf20Sopenharmony_ci{ 4108c2ecf20Sopenharmony_ci return test_harness(test_vphn, "test-vphn"); 4118c2ecf20Sopenharmony_ci} 412