rem: static s32 __card_readarrayunlock(u32 chn,u32 address,void *buffer,u32 len,u32 flag)
add: static s32 __card_readarrayunlock(s32 chn,u32 address,void *buffer,u32 len,u32 flag)
context: static s32 __card_readarrayunlock(u32 chn,u32 address,void *buffer,u32 len,u32 flag){	s32 ret;	u32 err;	u8 regbuf[5];	card_block *card = &cardmap[chn];#ifdef _CARD_DEBUG	printf("__card_readarrayunlock(%d,%d,%p,%d,%d)\n",chn,address,buffer,len,flag);#endif	if(EXI_Select(chn,EXI_DEVICE_0,EXI_SPEED16MHZ)==0) return CARD_ERROR_NOCARD;		address &= 0xFFFFF000;	memset(regbuf,0,5);	regbuf[0] = 0x52;	if(!flag) {		regbuf[1] = ((address&0x60000000)>>29)&0xff;		regbuf[2] = ((address&0x1FE00000)>>21)&0xff;		regbuf[3] = ((address&0x00180000)>>19)&0xff;		regbuf[4] = ((address&0x0007F000)>>12)&0xff;	} else {		regbuf[1] = (address>>24)&0xff;		regbuf[2] = ((address&0x00FF0000)>>16)&0xff;	}		err = 0;	if(EXI_ImmEx(chn,regbuf,5,EXI_WRITE)==0) err |= 0x01;	if(EXI_ImmEx(chn,card->workarea+CARD_READSIZE,card->latency,EXI_WRITE)==0) err |= 0x02;	if(EXI_ImmEx(chn,buffer,len,EXI_READ)==0) err |= 0x04;	if(EXI_Deselect(chn)==0) err |= 0x08;	if(err) ret = CARD_ERROR_NOCARD;	else ret = CARD_ERROR_READY;		return ret;}