From 572c78584031698cbbf04f222722bec8d026e184 Mon Sep 17 00:00:00 2001 From: Romain Dolbeau Date: Sun, 13 Dec 2020 15:05:02 +0100 Subject: [PATCH] NetBSD test code for prototype driver --- NetBSD/test/gcm.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 NetBSD/test/gcm.c diff --git a/NetBSD/test/gcm.c b/NetBSD/test/gcm.c new file mode 100644 index 0000000..cc8596c --- /dev/null +++ b/NetBSD/test/gcm.c @@ -0,0 +1,94 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +struct rdfpga_128bits { + uint32_t x[4]; +}; + +#define RDFPGA_WC _IOW(0, 1, struct rdfpga_128bits) +#define RDFPGA_WH _IOW(0, 2, struct rdfpga_128bits) +#define RDFPGA_WI _IOW(0, 3, struct rdfpga_128bits) +#define RDFPGA_RC _IOR(0, 4, struct rdfpga_128bits) +#define RDFPGA_WL _IOW(0, 1, uint32_t) + +static const char* rdfpga_device = "/dev/rdfpga0"; + +int +main(int argc, char *argv[]) +{ + int devfd; + struct rdfpga_128bits data; + int pattern = 0xF00FF00F; + + if (argc > 1) + pattern = atoi(argv[1]); + + if ( (devfd = open(rdfpga_device, O_RDWR)) == -1) { + perror("can't open device file"); + return 1; + } + + /* + x"6b8b4567"); + x"66334873"); + x"2ae8944a"); + x"46e87ccd"); + + x"327b23c6"); + x"74b0dc51"); + x"625558ec"); + x"3d1b58ba"); + + x"643c9869"); + x"19495cff"); + x"238e1f29"); + x"507ed7ab"); + + */ + if (ioctl(devfd, RDFPGA_WL, &pattern) == -1) { + perror("ioctl failed"); + } + + data.x[0] = 0x327b23c6; + data.x[1] = 0x74b0dc51; + data.x[2] = 0x625558ec; + data.x[3] = 0x3d1b58ba; + if (ioctl(devfd, RDFPGA_WC, &data) == -1) { + perror("ioctl failed"); + } + + data.x[0] = 0x6b8b4567; + data.x[1] = 0x66334873; + data.x[2] = 0x2ae8944a; + data.x[3] = 0x46e87ccd; + if (ioctl(devfd, RDFPGA_WH, &data) == -1) { + perror("ioctl failed"); + } + + data.x[0] = 0x643c9869; + data.x[1] = 0x19495cff; + data.x[2] = 0x238e1f29; + data.x[3] = 0x507ed7ab; + if (ioctl(devfd, RDFPGA_WI, &data) == -1) { + perror("ioctl failed"); + } + + if (ioctl(devfd, RDFPGA_RC, &data) == -1) { + perror("ioctl failed"); + } + printf("0x%08x 0x%08x 0x%08x 0x%08x\n", + data.x[0], + data.x[1], + data.x[2], + data.x[3]); + + close(devfd); + return 0; +} +