+int jtag_set_ir(char *s,int bitlen) {
+
+ u8 ir[MAXDEV*MAXIRLEN/8];
+ int count;
+
+ if(bitlen>=MAXDEV*MAXIRLEN) {
+ printf("instruction register too big!\n");
+ return -1;
+ }
+
+ memset(ir,0,MAXDEV*MAXIRLEN/8*sizeof(u8));
+
+ printf("ir to set: ");
+ while(bitlen) {
+ ir[count/8]|=(s[count]<<(count%8));
+ printf("%d",ir[count/8]&(1<<count%8)?1:0);
+ count+=1;
+ bitlen-=1;
+ }
+ printf("\n");
+
+ jtag_enter_shift_ir();
+ jtag_write_data(ir,bitlen);
+ jtag_leave_shift_ir();
+
+ return 0;
+
+}
+