int main(int argc, char** argv)
{
	int ret = 0;
	uint32_t reg, val;
	char *cmdname = strdup(argv[0]);
	struct pci_device *dev = intel_get_pci_device();

	if (argc != 3 || !IS_VALLEYVIEW(dev->device_id)) {
		usage(cmdname);
		ret = 1;
		goto out;
	}

	sscanf(argv[1], "0x%x", &reg);
	sscanf(argv[2], "0x%x", &val);

	intel_register_access_init(dev, 0);

	intel_dpio_reg_write(reg, val);

	intel_register_access_fini();

out:
	free(cmdname);
	return ret;
}
int main(int argc, char *argv[]) {
	struct pci_device *pci_dev;
	pci_dev = intel_get_pci_device();

	intel_register_access_init(pci_dev, 1);
	find_stuck_threads();
//	collect_rdata(atoi(argv[1]), atoi(argv[2]));
	return 0;
}
int main(int argc, char *argv[])
{
	bool use_mmio = false;
	int ret = 0;
	uint32_t reg;
	int i, ch;
	const char *cmdname = argv[0];

	fprintf(stderr, "WARNING: Use of %s has been deprecated and replaced by"
		" intel_reg.\n", argv[0]);

	while ((ch = getopt(argc, argv, "m")) != -1) {
		switch(ch) {
		case 'm':
			use_mmio = true;
			break;
		default:
			break;
		}
	}
	argc -= optind;
	argv += optind;

	if (argc < 1) {
		usage(cmdname);
		return 1;
	}

	if (use_mmio)
		intel_register_access_init(intel_get_pci_device(), 0);
	else
		assert(iopl(3) == 0);

	for (i = 0; i < argc; i++) {
		sscanf(argv[i], "0x%x", &reg);
		printf("0x%X : 0x%X\n", reg, read_reg(reg, use_mmio));
	}

	if (use_mmio)
		intel_register_access_fini();
	else
		iopl(0);

	return ret;
}
int main(int argc, char** argv)
{
    uint32_t reg, value;
    volatile uint32_t *ptr;

    if (argc < 3) {
        printf("Usage: %s addr value\n", argv[0]);
        printf("  WARNING: This is dangerous to you and your system's health.\n");
        printf("           Only for use in debugging.\n");
        exit(1);
    }

    intel_register_access_init(intel_get_pci_device(), 0);
    sscanf(argv[1], "0x%x", &reg);
    sscanf(argv[2], "0x%x", &value);
    ptr = (volatile uint32_t *)((volatile char *)mmio + reg);

    printf("Value before: 0x%X\n", *ptr);
    *ptr = value;
    printf("Value after: 0x%X\n", *ptr);

    intel_register_access_fini();
    return 0;
}
int main(int argc, char *argv[])
{
	uint32_t port, reg, val;
	struct pci_device *dev = intel_get_pci_device();
	int i, nregs, count = 1, reg_stride;
	const char *name;

	fprintf(stderr, "WARNING: Use of %s has been deprecated and replaced by"
		" intel_reg.\n", argv[0]);

	if (!IS_VALLEYVIEW(dev->device_id) &&
	    !IS_CHERRYVIEW(dev->device_id)) {
		usage(argv[0]);
		return 1;
	}

	for (;;) {
		int c = getopt(argc, argv, "hc:");

		if (c == -1)
			break;

		switch (c) {
		case 'h':
			usage(argv[0]);
			return 0;
		case 'c':
			count = strtol(optarg, NULL, 0);
			if (count < 1) {
				usage(argv[0]);
				return 3;
			}
			break;
		}
	}

	nregs = argc - optind;
	if (nregs < 1) {
		usage(argv[0]);
		return 2;
	}

	i = optind;
	name = argv[i++];
	port = iosf_sb_port_parse(name, &reg_stride);

	intel_register_access_init(dev, 0);

	for (; i < argc; i++) {
		int j;

		reg = strtoul(argv[i], NULL, 16);

		for (j = 0; j < count; j++) {
			val = intel_iosf_sb_read(port, reg);
			printf("0x%02x(%s)/0x%04x : 0x%08x\n", port, name, reg, val);
			reg += reg_stride;
		}
	}

	intel_register_access_fini();

	return 0;
}