+
+static void __attribute__ ((constructor)) libusbdriver_init(void) {
+ int i;
+ char buf[256];
+ char buf2[256];
+
+ for (i = 0; i < 4; i++) {
+ snprintf(buf, sizeof(buf), "XIL_IMPACT_ENV_LPT%d_BASE_ADDRESS", i+1);
+ snprintf(buf2, sizeof(buf2), "%x", 0x10*i);
+ setenv(buf, buf2, 1);
+ snprintf(buf, sizeof(buf), "XIL_IMPACT_ENV_LPT%d_ECP_ADDRESS", i+1);
+ snprintf(buf2, sizeof(buf2), "%x", (0x10*i)+0x400);
+ setenv(buf, buf2, 1);
+ }
+
+ setenv("XIL_IMPACT_USE_LIBUSB", "0", 1);
+ setenv("XIL_IMPACT_USE_WINDRIVER", "1", 1);
+
+ #if __WORDSIZE == 32
+ struct utsname un;
+ int ret;
+
+ ret = uname(&un);
+
+ if (ret == 0 && (!strcmp(un.machine, "x86_64"))) {
+ DPRINTF("setting 32bit personality\n");
+ (long)syscall(SYS_personality, PER_LINUX32);
+ }
+ #endif
+}