diff --git a/gc/gcutil.h b/gc/gcutil.h index 3458ee03..458d4e88 100644 --- a/gc/gcutil.h +++ b/gc/gcutil.h @@ -8,5 +8,12 @@ # define ATTRIBUTE_PACKED __attribute__((packed)) #endif -#endif /* _GCUTIL_H */ +#define _SHIFTL(v, s, w) \ + ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) //mask the first w bits of v before lshifting +#define _SHIFTR(v, s, w) \ + ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) //rshift v and mask the first w bits afterwards + +#define _ROTL(v,s) \ + (((u32)v<>(0x20-s))) +#endif /* _GCUTIL_H */ diff --git a/libdb/geckousb.c b/libdb/geckousb.c index 2e92e2dd..7ebe60d3 100644 --- a/libdb/geckousb.c +++ b/libdb/geckousb.c @@ -7,11 +7,6 @@ #include "geckousb.h" -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - static struct dbginterface usb_device; static __inline__ int __send_command(s32 chn,u16 *cmd) @@ -81,7 +76,7 @@ static int __usb_checkrecv(s32 chn) static void __usb_flush(s32 chn) { char tmp; - + if(!EXI_Lock(chn,EXI_DEVICE_0,NULL)) return; while(__usb_recvbyte(chn,&tmp)); diff --git a/libdb/uIP/bba.c b/libdb/uIP/bba.c index 97d345ab..42a47b08 100644 --- a/libdb/uIP/bba.c +++ b/libdb/uIP/bba.c @@ -1,6 +1,7 @@ #include #include #include +#include "gcutil.h" #include "asm.h" #include "processor.h" #include "exi.h" @@ -16,7 +17,7 @@ #define BBA_MINPKTSIZE 60 #define BBA_CID 0x04020200 - + #define BBA_CMD_IRMASKALL 0x00 #define BBA_CMD_IRMASKNONE 0xF8 @@ -187,11 +188,6 @@ struct bba_descr { u32 X(X(next_packet_ptr:12, packet_len:12), status:8); } __attribute((packed)); -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - /* new functions */ #define bba_select() EXI_Select(EXI_CHANNEL_0,EXI_DEVICE_2,EXI_SPEED32MHZ) #define bba_deselect() EXI_Deselect(EXI_CHANNEL_0) @@ -344,7 +340,7 @@ static inline void bba_insregister(u32 reg) static inline void bba_insdata(void *val,u32 len) { EXI_ImmEx(EXI_CHANNEL_0,val,len,EXI_READ); -} +} static inline void bba_outsregister(u32 reg) @@ -452,7 +448,7 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) struct uip_pbuf *p,*q; UIP_LOG("bba_start_rx()\n"); - + recvd = 0; rwp = bba_in12(BBA_RWP); rrp = bba_in12(BBA_RRP); @@ -473,10 +469,10 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) rrp = bba_in12(BBA_RRP); continue; } - + pos = (rrp<<8)+4; top = (BBA_INIT_RHBP+1)<<8; - + p = uip_pbuf_alloc(UIP_PBUF_RAW,size,UIP_PBUF_POOL); if(p) { for(q=p;q!=NULL;q=q->next) { @@ -486,7 +482,7 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) bba_insdata(q->payload,size); } else { s32 chunk = top-pos; - + size -= chunk; pos = BBA_INIT_RRP<<8; bba_insdata(q->payload,chunk); @@ -499,7 +495,7 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) bba_deselect(); pos += size; } - + EXI_Unlock(EXI_CHANNEL_0); bba_process(p,dev); EXI_Lock(EXI_CHANNEL_0,EXI_DEVICE_2,NULL); @@ -507,7 +503,7 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) break; recvd++; - + bba_out12(BBA_RRP,(rrp=cur_descr.next_packet_ptr)); rwp = bba_in12(BBA_RWP); } @@ -517,7 +513,7 @@ static s8_t bba_start_rx(struct uip_netif *dev,u32 budget) static inline void bba_interrupt(u16 *pstatus) { u8 ir,imr,status; - + ir = bba_in8(BBA_IR); imr = bba_in8(BBA_IMR); status = ir&imr; @@ -555,7 +551,7 @@ static s8_t bba_dochallengeresponse(void) { u16 status; s32 cnt; - + UIP_LOG("bba_dochallengeresponse()\n"); /* as we do not have interrupts we've to poll the irqs */ cnt = 0; @@ -564,7 +560,7 @@ static s8_t bba_dochallengeresponse(void) bba_devpoll(&status); if(status==0x1000) cnt = 0; } while(cnt<100 && !(status&0x0800)); - + if(cnt>=1000) return UIP_ERR_IF; return UIP_ERR_OK; } @@ -577,7 +573,7 @@ static s8_t __bba_init(struct uip_netif *dev) __bba_reset(); priv->revid = bba_cmd_in8(0x01); - + bba_cmd_outs(0x04,&priv->devid,2); bba_cmd_out8(0x05,priv->acstart); @@ -586,7 +582,7 @@ static s8_t __bba_init(struct uip_netif *dev) bba_out8(0x5c, (bba_in8(0x5c)|0x04)); __bba_recv_init(); - + bba_ins(BBA_NAFR_PAR0,priv->ethaddr->addr, 6); bba_out8(BBA_IR,0xFF); @@ -607,9 +603,9 @@ static s8_t bba_init_one(struct uip_netif *dev) priv->revid = 0x00; priv->devid = 0xD107; priv->acstart = 0x4E; - + ret = __bba_init(dev); - + return ret; } @@ -668,7 +664,7 @@ static void bba_devpoll(u16 *pstatus) s64 now; UIP_LOG("bba_devpoll()\n"); - + now = gettime(); if(diff_msec(bba_arp_tmr,now)>=UIP_ARP_TMRINTERVAL) { uip_arp_timer(); @@ -743,7 +739,7 @@ static s8_t __bba_link_tx(struct uip_netif *dev,struct uip_pbuf *p) u8 pad[60]; u32 len; struct uip_pbuf *tmp; - + if(EXI_Lock(EXI_CHANNEL_0,EXI_DEVICE_2,NULL)==0) return UIP_ERR_IF; if(p->tot_len>BBA_TX_MAX_PACKET_SIZE) { @@ -751,7 +747,7 @@ static s8_t __bba_link_tx(struct uip_netif *dev,struct uip_pbuf *p) EXI_Unlock(EXI_CHANNEL_0); return UIP_ERR_PKTSIZE; } - + if(!__linkstate()) { EXI_Unlock(EXI_CHANNEL_0); return UIP_ERR_ABRT; @@ -796,13 +792,13 @@ s8_t uip_bba_init(struct uip_netif *dev) } while((ret=__bba_getlink_state_async())==0 && cnt<10000); if(!ret) return UIP_ERR_IF; - dev->flags |= UIP_NETIF_FLAG_LINK_UP; + dev->flags |= UIP_NETIF_FLAG_LINK_UP; uip_netif_setup(dev); uip_arp_init(); - + bba_recv_pbufs = NULL; bba_arp_tmr = gettime(); - + return UIP_ERR_OK; } @@ -810,13 +806,13 @@ uipdev_s uip_bba_create(struct uip_netif *dev) { dev->name[0] = IFNAME0; dev->name[1] = IFNAME1; - + dev->output = __bba_start_tx; dev->linkoutput = __bba_link_tx; dev->mtu = 1500; dev->flags = UIP_NETIF_FLAG_BROADCAST; dev->hwaddr_len = 6; - + bba_device.ethaddr = (struct uip_eth_addr*)dev->hwaddr; bba_device.state = UIP_ERR_OK; @@ -829,7 +825,7 @@ void uip_bba_poll(struct uip_netif *dev) u16 status; UIP_LOG("uip_bba_poll()\n"); - + bba_devpoll(&status); } diff --git a/libogc/aram.c b/libogc/aram.c index a338c7ae..2641f311 100644 --- a/libogc/aram.c +++ b/libogc/aram.c @@ -31,6 +31,7 @@ distribution. #include #include #include +#include "gcutil.h" #include "asm.h" #include "processor.h" #include "aram.h" @@ -54,11 +55,6 @@ distribution. #define AR_ARAMEXPANSION 2 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - static vu16* const _dspReg = (u16*)0xCC005000; static ARCallback __ARDmaCallback = NULL; diff --git a/libogc/audio.c b/libogc/audio.c index c9f2d0f4..83bd40dc 100644 --- a/libogc/audio.c +++ b/libogc/audio.c @@ -30,6 +30,7 @@ distribution. #include +#include "gcutil.h" #include "asm.h" #include "processor.h" #include "irq.h" @@ -65,11 +66,6 @@ distribution. #define AI_SCRESET 0x20 #define AI_DMAFR 0x40 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - #if defined(HW_DOL) static vu32* const _aiReg = (u32*)0xCC006C00; #elif defined(HW_RVL) diff --git a/libogc/cache.c b/libogc/cache.c index 44fe5920..88f5e0cf 100644 --- a/libogc/cache.c +++ b/libogc/cache.c @@ -28,15 +28,11 @@ distribution. -------------------------------------------------------------*/ -#include -#include +#include "gcutil.h" +#include "asm.h" +#include "processor.h" #include "cache.h" -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - extern void __LCEnable(void); extern void L2GlobalInvalidate(void); extern void L2Enable(void); diff --git a/libogc/card.c b/libogc/card.c index 14c4a4bc..3cd0562d 100644 --- a/libogc/card.c +++ b/libogc/card.c @@ -53,13 +53,6 @@ distribution. #define CARD_SYSBAT 0x6000 #define CARD_SYSBAT_BACK 0x8000 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) -#define _ROTL(v,s) \ - (((u32)v<>(0x20-s))) - #define CARD_STATUS_UNLOCKED 0x40 struct card_header { @@ -138,7 +131,7 @@ typedef struct _card_block { lwpq_t wait_sync_queue; syswd_t timeout_svc; dsptask_t dsp_task; - + cardcallback card_ext_cb; cardcallback card_tx_cb; cardcallback card_exi_cb; @@ -205,7 +198,7 @@ static u32 _cardunlockdata[0x160] ATTRIBUTE_ALIGN(32) = }; #endif -static u32 card_sector_size[] = +static u32 card_sector_size[] = { 0x0002000, 0x0004000, @@ -217,7 +210,7 @@ static u32 card_sector_size[] = 0x0000000 }; -static u32 card_latency[] = +static u32 card_latency[] = { 0x00000004, 0x00000008, @@ -278,14 +271,14 @@ static void __card_checksum(u16 *buff,u32 len,u16 *cs1,u16 *cs2) printf("__card_checksum(%p,%d,%p,%p)\n",buff,len,cs1,cs2); #endif *cs1 = 0; - *cs2 = 0; + *cs2 = 0; len /= 2; - for (i = 0; i < len; ++i) { - *cs1 += buff[i]; - *cs2 += (buff[i] ^ 0xffff); - } - if (*cs1 == 0xffff) *cs1 = 0; - if (*cs2 == 0xffff) *cs2 = 0; + for (i = 0; i < len; ++i) { + *cs1 += buff[i]; + *cs2 += (buff[i] ^ 0xffff); + } + if (*cs1 == 0xffff) *cs1 = 0; + if (*cs2 == 0xffff) *cs2 = 0; } static s32 __card_putcntrlblock(card_block *card,s32 result) @@ -311,7 +304,7 @@ static s32 __card_getcntrlblock(s32 chn,card_block **card) rcard = &cardmap[chn]; if(!rcard->attached) { _CPU_ISR_Restore(level); - return CARD_ERROR_NOCARD; + return CARD_ERROR_NOCARD; } ret = CARD_ERROR_BUSY; @@ -374,7 +367,7 @@ static void __card_updateiconoffsets(struct card_direntry *entry,card_stat *stat stats->icon_speed = 0; iconaddr = 0; } - + if(entry->bannerfmt&CARD_BANNER_MASK) { if(!(entry->bannerfmt&0x10)) { bnrfmt = (entry->bannerfmt&CARD_BANNER_MASK); @@ -393,7 +386,7 @@ static void __card_updateiconoffsets(struct card_direntry *entry,card_stat *stat stats->offset_banner = -1; stats->offset_banner_tlut = -1; } - } + } nicons = 0; for(i=0;iiconfmt[i]) { - case 1: //CARD_ICON_CI with shared palette + case 1: //CARD_ICON_CI with shared palette stats->offset_icon[i] = iconaddr; stats->offset_icon_tlut[i] = iconbase + (nicons*1024); iconaddr += 1024; @@ -437,11 +430,11 @@ static s32 __card_getstatusex(s32 chn,s32 fileno,struct card_direntry *entry) s32 ret; card_block *card = NULL; struct card_dat *dirblock = NULL; - - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(fileno<0 || fileno>=CARD_MAXFILES) return CARD_ERROR_FATAL_ERROR; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; - + ret = CARD_ERROR_BROKEN; dirblock = __card_getdirblock(card); if(dirblock) { @@ -457,8 +450,8 @@ static s32 __card_setstatusexasync(s32 chn,s32 fileno,struct card_direntry *entr card_block *card = NULL; struct card_dat *dirblock = NULL; struct card_direntry *entries = NULL; - - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(fileno<0 || fileno>=CARD_MAXFILES) return CARD_ERROR_FATAL_ERROR; if(entry->filename[0]==0xff || entry->filename[0]==0) return CARD_ERROR_FATAL_ERROR; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; @@ -494,7 +487,7 @@ static s32 __card_setstatusexasync(s32 chn,s32 fileno,struct card_direntry *entr memcpy(entries[fileno].gamecode,entry->gamecode,4); memcpy(entries[fileno].company,entry->company,2); } - + entries[fileno].lastmodified = entry->lastmodified; entries[fileno].bannerfmt = entry->bannerfmt; entries[fileno].iconaddr = entry->iconaddr; @@ -582,7 +575,7 @@ static s32 __card_seek(card_file *file,s32 len,s32 offset,card_block **rcard) } card->curr_file = file; file->len = len; - + if(offsetoffset) { file->offset = 0; file->iblock = entry->block; @@ -642,7 +635,7 @@ static u32 __card_checkdir(card_block *card,u32 *currdir) if(card->curr_dir==NULL) { card->curr_dir = dirblock[dir]; memcpy(dirblock[dir],dirblock[dir^1],8192); - } + } else if(card->curr_dir==dirblock[0]) dir = 0; else dir = 1; @@ -698,7 +691,7 @@ static u32 __card_checkfat(card_block *card,u32 *currfat) if(card->curr_fat==NULL) { card->curr_fat = fatblock[fat]; memcpy(fatblock[fat],fatblock[fat^1],8192); - } + } else if(card->curr_fat==fatblock[0]) fat = 0; else fat = 1; @@ -728,7 +721,7 @@ static u32 __card_iscard(u32 id) if(id&~0xffff) return 0; if(id&0x03) return 0; - + ret = 0; tmp = id&0xfc; if(tmp==EXI_MEMCARD59 || tmp==EXI_MEMCARD123 @@ -760,9 +753,9 @@ static s32 __card_allocblock(s32 chn,u32 blocksneed,cardcallback callback) #ifdef _CARD_DEBUG printf("__card_allocblock(%p,%d)\n",fatblock,fatblock->freeblocks); #endif - + if(fatblock->freeblocks(card->blocks-CARD_SYSAREA)) return CARD_ERROR_BROKEN; - + currblock++; if(currblock=card->blocks) currblock = CARD_SYSAREA; if(fatblock->fat[currblock-CARD_SYSAREA]==0) { @@ -817,7 +810,7 @@ static s32 __card_freeblock(s32 chn,u16 block,cardcallback callback) card = &cardmap[chn]; if(!card->attached) return CARD_ERROR_NOCARD; - + fatblock = __card_getbatblock(card); next = fatblock->fat[block-CARD_SYSAREA]; fatblock->fat[block-CARD_SYSAREA] = 0; @@ -843,7 +836,7 @@ static s32 __card_unlockedhandler(s32 chn,s32 dev) if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; card = &cardmap[chn]; - + ret = CARD_ERROR_READY; cb = card->card_unlock_cb; if(cb) { @@ -922,7 +915,7 @@ static s32 __card_sleep(s32 chn) if(err) ret = CARD_ERROR_NOCARD; else ret = CARD_ERROR_READY; - + return ret; } @@ -946,7 +939,7 @@ static s32 __card_wake(s32 chn) if(err) ret = CARD_ERROR_NOCARD; else ret = CARD_ERROR_READY; - + return ret; } #endif @@ -962,7 +955,7 @@ static s32 __card_enableinterrupt(s32 chn,u32 enable) if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(EXI_Select(chn,EXI_DEVICE_0,EXI_SPEED16MHZ)==0) return CARD_ERROR_NOCARD; - + err = 0; val[0] = 0x81; if(enable) val[1] = 0x01; @@ -970,10 +963,10 @@ static s32 __card_enableinterrupt(s32 chn,u32 enable) if(EXI_Imm(chn,val,2,EXI_WRITE,NULL)==0) err |= 0x01; if(EXI_Sync(chn)==0) err |= 0x02; if(EXI_Deselect(chn)==0) err |= 0x04; - + if(err) ret = CARD_ERROR_BUSY; else ret = CARD_ERROR_READY; - + return ret; } @@ -992,7 +985,7 @@ static s32 __card_txhandler(s32 chn,s32 dev) err = 0; if(EXI_Deselect(chn)==0) ret |= err; if(EXI_Unlock(chn)==0) ret |= err; - + cb = card->card_tx_cb; if(cb) { card->card_tx_cb = NULL; @@ -1020,7 +1013,7 @@ static void __timeouthandler(syswd_t alarm,void *cbarg) chn++; } if(chn=EXI_CHANNEL_2) return; - + if(card->attached) { EXI_RegisterEXICallback(chn,NULL); @@ -1080,7 +1073,7 @@ static s32 __retry(s32 chn) EXI_Unlock(chn); return CARD_ERROR_NOCARD; } - + if(card->cmd[0]==0x52) { if(EXI_ImmEx(chn,card->workarea+CARD_READSIZE,card->latency,EXI_WRITE)==0) { EXI_Deselect(chn); @@ -1172,7 +1165,7 @@ static s32 __card_exthandler(s32 chn,s32 dev) card->attached = 0; EXI_RegisterEXICallback(chn,NULL); SYS_CancelAlarm(card->timeout_svc); - + cb = card->card_exi_cb; if(cb) { card->card_exi_cb = NULL; @@ -1184,7 +1177,7 @@ static s32 __card_exthandler(s32 chn,s32 dev) card->card_ext_cb = NULL; cb(chn,CARD_ERROR_NOCARD); } - + } return 1; } @@ -1248,7 +1241,7 @@ static void __erase_callback(s32 chn,s32 result) file = card->curr_file; if((ret=__card_write(chn,(file->iblock*card->sector_size),card->sector_size,card->cmd_usr_buf,__write_callback))>=0) return; } - + cb = card->card_api_cb; card->card_api_cb = NULL; __card_putcntrlblock(card,ret); @@ -1290,7 +1283,7 @@ static void __read_callback(s32 chn,s32 result) } len = file->lensector_size?file->len:card->sector_size; if(__card_read(chn,(file->iblock*card->sector_size),len,card->cmd_usr_buf,__read_callback)>=0) return; - + } } else ret = CARD_ERROR_CANCELED; @@ -1313,10 +1306,10 @@ static void __delete_callback(s32 chn,s32 result) #endif cb = card->card_api_cb; card->card_api_cb = NULL; - + ret = result; if(ret>=0 && (ret=__card_freeblock(chn,card->curr_fileblock,cb))>=0) return; - + __card_putcntrlblock(card,ret); if(cb) cb(chn,ret); } @@ -1340,7 +1333,7 @@ static void __format_callback(s32 chn,s32 result) card->curr_dir = card->workarea+CARD_SYSDIR; memcpy(card->curr_dir,card->workarea+CARD_SYSDIR_BACK,8192); - + card->curr_fat = card->workarea+CARD_SYSBAT; memcpy(card->curr_fat,card->workarea+CARD_SYSBAT_BACK,8192); } @@ -1414,14 +1407,14 @@ static void __unlocked_callback(s32 chn,s32 result) #endif if(chn=EXI_CHANNEL_2) return; card = &cardmap[chn]; - + ret = result; if(ret>=0) { card->card_unlock_cb = __unlocked_callback; if(EXI_Lock(chn,EXI_DEVICE_0,__card_unlockedhandler)==1) { card->card_unlock_cb = NULL; ret = __retry(chn); - } else + } else ret = 0; } if(ret<0) { @@ -1508,7 +1501,7 @@ static s32 __card_writepage(s32 chn,cardcallback callback) if(EXI_ImmEx(chn,card->cmd,card->cmd_len,EXI_WRITE)==1 && EXI_Dma(chn,card->cmd_usr_buf,128,card->cmd_mode,__card_txhandler)==1) return CARD_ERROR_READY; - + card->card_exi_cb = NULL; EXI_Deselect(chn); EXI_Unlock(chn); @@ -1534,15 +1527,15 @@ static s32 __card_readsegment(s32 chn,cardcallback callback) card->cmd_len = 5; card->cmd_mode = EXI_READ; card->cmd_retries = 0; - + ret = __card_start(chn,callback,NULL); if(ret<0) return ret; - + err = 0; if(EXI_ImmEx(chn,card->cmd,card->cmd_len,EXI_WRITE)==0) err |= 0x01; if(EXI_ImmEx(chn,card->workarea+CARD_READSIZE,card->latency,EXI_WRITE)==0) err |= 0x02; if(EXI_Dma(chn,card->cmd_usr_buf,CARD_READSIZE,card->cmd_mode,__card_txhandler)==0) err |= 0x04; - + if(err) { card->card_tx_cb = NULL; EXI_Deselect(chn); @@ -1625,9 +1618,9 @@ static s32 __card_write(s32 chn,u32 address,u32 block_len,void *buffer,cardcallb #endif if(chn= EXI_CHANNEL_2) return CARD_ERROR_FATAL_ERROR; card = &cardmap[chn]; - + if(!card->attached) return CARD_ERROR_NOCARD; - + card->cmd_blck_cnt = block_len>>7; card->cmd_sector_addr = address; card->cmd_usr_buf = buffer; @@ -1652,7 +1645,7 @@ static s32 __card_read(s32 chn,u32 address,u32 block_len,void *buffer,cardcallba card->cmd_usr_buf = buffer; card->card_xfer_cb = callback; ret = __card_readsegment(chn,__blockreadcallback); - + return ret; } @@ -1677,10 +1670,10 @@ static s32 __card_formatregion(s32 chn,u32 encode,cardcallback callback) if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; - + header = workarea = card->workarea; memset(header,0xff,8192); - + tmp = _viReg[55]; header->encoding = encode; @@ -1698,7 +1691,7 @@ static s32 __card_formatregion(s32 chn,u32 encode,cardcallback callback) rnd_val = (((rnd_val*(u64)0x0000000041c64e6d)+(u64)0x0000000000003039)>>16); rnd_val &= (u64)0x0000000000007fff; - + cnt++; } __SYS_UnlockSramEx(0); @@ -1708,7 +1701,7 @@ static s32 __card_formatregion(s32 chn,u32 encode,cardcallback callback) header->device_id = 0; header->size = card->card_size; __card_checksum((u16*)header,508,&header->chksum1,&header->chksum2); - + cnt = 0; while(cnt<2) { memblock = workarea+((cnt+1)<<13); @@ -1733,9 +1726,9 @@ static s32 __card_formatregion(s32 chn,u32 encode,cardcallback callback) cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; - + DCStoreRange(card->workarea,CARD_WORKAREA); - + card->format_step = 0; if((ret=__card_sectorerase(chn,(card->sector_size*card->format_step),__format_callback))>=0) return ret; @@ -1752,19 +1745,19 @@ static s32 __card_sectorerase(s32 chn,u32 sector,cardcallback callback) #endif if(chn= EXI_CHANNEL_2) return CARD_ERROR_FATAL_ERROR; card = &cardmap[chn]; - + if(sector%card->sector_size) return CARD_ERROR_FATAL_ERROR; - + card->cmd[0] = 0xf1; card->cmd[1] = (sector>>17)&0x7f; card->cmd[2] = (sector>>9)&0xff; card->cmd_len = 3; card->cmd_mode = -1; card->cmd_retries = 3; - + ret = __card_start(chn,NULL,callback); if(ret<0) return ret; - + if(EXI_ImmEx(chn,card->cmd,card->cmd_len,EXI_WRITE)==0) { card->card_exi_cb = NULL; return CARD_ERROR_NOCARD; @@ -1834,7 +1827,7 @@ static void __card_createfatcallback(s32 chn,s32 result) #endif cb = card->card_api_cb; card->card_api_cb = NULL; - + dirblock = __card_getdirblock(card); file = card->curr_file; @@ -1857,11 +1850,11 @@ static void __card_createfatcallback(s32 chn,s32 result) file->offset = 0; file->iblock = card->curr_fileblock; - + if((ret=__card_updatedir(chn,cb))<0) { __card_putcntrlblock(card,ret); if(cb) cb(chn,ret); - } + } } static s32 __card_updatefat(s32 chn,struct card_bat *fatblock,cardcallback callback) @@ -1895,14 +1888,14 @@ static s32 __card_updatedir(s32 chn,cardcallback callback) card = &cardmap[chn]; if(!card->attached) return CARD_ERROR_NOCARD; - + dirblock = __card_getdirblock(card); dircntrl = dirblock+8128; ++dircntrl->updated; __card_checksum((u16*)dirblock,0x1ffc,&dircntrl->chksum1,&dircntrl->chksum2); DCStoreRange(dirblock,8192); card->card_erase_cb = callback; - + return __card_sectorerase(chn,(((u32)dirblock-(u32)card->workarea)>>13)*card->sector_size,__card_direrasecallback); } @@ -1927,7 +1920,7 @@ static void __card_dounmount(s32 chn,s32 result) } static s32 __card_domount(s32 chn) -{ +{ u8 status,kval; s32 ret = CARD_ERROR_READY; u32 sum; @@ -1963,7 +1956,7 @@ static s32 __card_domount(s32 chn) if((ret=__card_clearstatus(chn))<0) goto exit; if((ret=__card_readstatus(chn,&status))<0) goto exit; - + if(EXI_Probe(chn)==0) { ret = CARD_ERROR_NOCARD; goto exit; @@ -1973,7 +1966,7 @@ static s32 __card_domount(s32 chn) printf("__card_domount(card locked)\n"); #endif if((ret=__dounlock(chn,card->key))<0) goto exit; - + cnt = 0; sum = 0; sramex = __SYS_LockSramEx(); @@ -1999,7 +1992,7 @@ static s32 __card_domount(s32 chn) } cnt = sramex->flashID_chksum[chn]; __SYS_UnlockSramEx(0); - + sum = (sum^-1)&0xff; if(cnt!=sum) { ret = CARD_ERROR_IOERROR; @@ -2018,12 +2011,12 @@ static s32 __card_domount(s32 chn) } if((ret=__card_read(chn,(card->sector_size*(card->mount_step-2)),8192,card->workarea+((card->mount_step-2)<<13),__card_mountcallback))<0) goto exit; - return ret; - + return ret; + exit: EXI_Unlock(chn); __card_dounmount(chn,ret); - + return ret; } @@ -2032,7 +2025,7 @@ static void __card_mountcallback(s32 chn,s32 result) s32 ret; cardcallback cb; card_block *card = &cardmap[chn]; - + ret = result; if(ret==CARD_ERROR_NOCARD || ret==CARD_ERROR_IOERROR) { __card_dounmount(chn,ret); @@ -2047,7 +2040,7 @@ static void __card_mountcallback(s32 chn,s32 result) __card_putcntrlblock(card,ret); } } - + cb = card->card_api_cb; card->card_api_cb = NULL; if(cb) cb(chn,ret); @@ -2055,7 +2048,7 @@ static void __card_mountcallback(s32 chn,s32 result) static __inline__ void __card_srand(u32 val) { - crand_next = val; + crand_next = val; } static __inline__ u32 __card_rand(void) @@ -2067,7 +2060,7 @@ static __inline__ u32 __card_rand(void) static u32 __card_initval(void) { u32 ticks = gettick(); - + __card_srand(ticks); return ((0x7FEC8000|__card_rand())&~0x00000fff); } @@ -2079,7 +2072,7 @@ static u32 __card_dummylen(void) __card_srand(ticks); val = (__card_rand()&0x1f)+1; - + do { ticks = gettick(); val = ticks<>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; @@ -2197,7 +2190,7 @@ static s32 __card_readarrayunlock(s32 chn,u32 address,void *buffer,u32 len,u32 f if(err) ret = CARD_ERROR_NOCARD; else ret = CARD_ERROR_READY; - + return ret; } @@ -2215,7 +2208,7 @@ static void __dsp_initcallback(dsptask_t *task) chn++; } if(chn>=EXI_CHANNEL_2) return; - + DSP_SendMailTo(0xFF000000); while(DSP_CheckMailTo()); DSP_SendMailTo((u32)card->workarea); @@ -2253,7 +2246,7 @@ static void __dsp_donecallback(dsptask_t *task) __card_mountcallback(chn,CARD_ERROR_NOCARD); return; } - + val = exnor(card->cipher,((len+card->latency+4)<<3)+1); { u32 a,b,c,r1,r2,r3; @@ -2301,9 +2294,9 @@ static s32 __dounlock(s32 chn,u32 *key) #endif array_addr = __card_initval(); len = __card_dummylen(); - + if(__card_readarrayunlock(chn,array_addr,tmp_buffer,len,0)<0) return CARD_ERROR_NOCARD; - + val = exnor_1st(array_addr,(len<<3)+1); { @@ -2328,7 +2321,7 @@ static s32 __dounlock(s32 chn,u32 *key) c = ((u32*)tmp_buffer)[2]; d = ((u32*)tmp_buffer)[3]; e = ((u32*)tmp_buffer)[4]; - + a = a^card->cipher; val = exnor(card->cipher,32); { @@ -2342,7 +2335,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + b = b^card->cipher; val = exnor(card->cipher,32); { @@ -2356,7 +2349,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + c = c^card->cipher; val = exnor(card->cipher,32); { @@ -2370,7 +2363,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + d = d^card->cipher; val = exnor(card->cipher,32); { @@ -2384,7 +2377,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + e = e^card->cipher; val = exnor(card->cipher,(len<<3)); { @@ -2398,7 +2391,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + val = exnor(card->cipher,33); { u32 a,b,c,r1,r2,r3; @@ -2411,7 +2404,7 @@ static s32 __dounlock(s32 chn,u32 *key) r1 = (val|(r3>>31)); card->cipher = r1; } - + cipher1[0] = d; cipher1[1] = e; workarea[0] = (u32)cipher1; @@ -2436,11 +2429,11 @@ static s32 __dounlock(s32 chn,u32 *key) card->dsp_task.init_cb = __dsp_initcallback; card->dsp_task.done_cb = __dsp_donecallback; DSP_AddTask(&card->dsp_task); - + key[0] = a; key[1] = b; key[2] = c; - + return CARD_ERROR_READY; } @@ -2518,7 +2511,7 @@ s32 CARD_ProbeEx(s32 chn,s32 *mem_size,s32 *sect_size) u32 idx = _ROTL(card_id,23)&0x1c; *sect_size = card_sector_size[idx>>2]; } - ret = CARD_ERROR_READY; + ret = CARD_ERROR_READY; } } } @@ -2557,7 +2550,7 @@ s32 CARD_MountAsync(s32 chn,void *workarea,cardcallback detach_cb,cardcallback a if(!attachcb) attachcb = __card_defaultapicallback; card->card_api_cb = attachcb; card->card_exi_cb = NULL; - + if(!card->attached) { if(EXI_Attach(chn,__card_exthandler)==0) { card->result = CARD_ERROR_NOCARD; @@ -2586,7 +2579,7 @@ s32 CARD_MountAsync(s32 chn,void *workarea,cardcallback detach_cb,cardcallback a __card_domount(chn); return 1; } - + ret = CARD_ERROR_WRONGDEVICE; _CPU_ISR_Restore(level); return ret; @@ -2625,15 +2618,15 @@ s32 CARD_ReadAsync(card_file *file,void *buffer,u32 len,u32 offset,cardcallback if(len<=0 || (len&0x1ff) || (offset>0 && (offset&0x1ff))) return CARD_ERROR_FATAL_ERROR; if((ret=__card_seek(file,len,offset,&card))<0) return ret; - + DCInvalidateRange(buffer,len); - + cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; if(len>=(card->sector_size-(file->offset&(card->sector_size-1)))) len = (card->sector_size-(file->offset&(card->sector_size-1))); - + if((ret=__card_read(file->chn,(file->iblock*card->sector_size),len,buffer,__read_callback))<0) { __card_putcntrlblock(card,ret); return ret; @@ -2662,7 +2655,7 @@ s32 CARD_WriteAsync(card_file *file,void *buffer,u32 len,u32 offset,cardcallback __card_putcntrlblock(card,CARD_ERROR_FATAL_ERROR); return CARD_ERROR_FATAL_ERROR; } - + DCStoreRange(buffer,len); cb = callback; if(!cb) cb = __card_defaultapicallback; @@ -2698,10 +2691,10 @@ s32 CARD_CreateAsync(s32 chn,const char *filename,u32 size,card_file *file,cardc #endif len = strlen(filename); if(len>CARD_FILENAMELEN) return CARD_ERROR_NAMETOOLONG; - + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; if(size<=0 || size%card->sector_size) return CARD_ERROR_FATAL_ERROR; - + dirblock = __card_getdirblock(card); filenum = -1; @@ -2732,10 +2725,10 @@ s32 CARD_CreateAsync(s32 chn,const char *filename,u32 size,card_file *file,cardc cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; - + entry[filenum].length = size/card->sector_size; strncpy((char*)entry[filenum].filename,filename,CARD_FILENAMELEN); - + card->curr_file = file; file->chn = chn; file->filenum = filenum; @@ -2743,7 +2736,7 @@ s32 CARD_CreateAsync(s32 chn,const char *filename,u32 size,card_file *file,cardc __card_putcntrlblock(card,ret); return ret; } - + return 0; } @@ -2771,10 +2764,10 @@ s32 CARD_CreateEntryAsync(s32 chn,card_dir *direntry,card_file *file,cardcallbac #endif len = strlen(direntry->filename); if(len>CARD_FILENAMELEN) return CARD_ERROR_NAMETOOLONG; - + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; if(direntry->filelen<=0 || direntry->filelen%card->sector_size) return CARD_ERROR_FATAL_ERROR; - + dirblock = __card_getdirblock(card); filenum = -1; @@ -2805,10 +2798,10 @@ s32 CARD_CreateEntryAsync(s32 chn,card_dir *direntry,card_file *file,cardcallbac cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; - + entry[filenum].length = direntry->filelen/card->sector_size; strncpy((char*)entry[filenum].filename,direntry->filename,CARD_FILENAMELEN); - + card->curr_file = file; file->chn = chn; file->filenum = filenum; @@ -2816,7 +2809,7 @@ s32 CARD_CreateEntryAsync(s32 chn,card_dir *direntry,card_file *file,cardcallbac __card_putcntrlblock(card,ret); return ret; } - + return 0; } @@ -2837,7 +2830,7 @@ s32 CARD_Open(s32 chn,const char *filename,card_file *file) card_block *card = NULL; if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - + file->filenum = -1; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; if((ret=__card_getfilenum(card,filename,(const char*)card_gamecode,(const char*)card_company,&fileno))<0) { @@ -2853,7 +2846,7 @@ s32 CARD_Open(s32 chn,const char *filename,card_file *file) file->filenum = fileno; file->offset = 0; file->len = dirblock->entries[fileno].length*card->sector_size; - file->iblock = dirblock->entries[fileno].block; + file->iblock = dirblock->entries[fileno].block; __card_putcntrlblock(card,CARD_ERROR_READY); return CARD_ERROR_READY; @@ -2866,7 +2859,7 @@ s32 CARD_OpenEntry(s32 chn,card_dir *entry,card_file *file) card_block *card = NULL; if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - + file->filenum = -1; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; if((ret=__card_getfilenum(card,entry->filename,(const char*)entry->gamecode,(const char*)entry->company,&fileno))<0) { @@ -2884,7 +2877,7 @@ s32 CARD_OpenEntry(s32 chn,card_dir *entry,card_file *file) file->filenum = fileno; file->offset = 0; file->len = dirblock->entries[fileno].length*card->sector_size; - file->iblock = dirblock->entries[fileno].block; + file->iblock = dirblock->entries[fileno].block; __card_putcntrlblock(card,CARD_ERROR_READY); return CARD_ERROR_READY; @@ -2898,7 +2891,7 @@ s32 CARD_Close(card_file *file) if(file->chnchn>=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(file->filenum<0 || file->filenum>=CARD_MAXFILES) return CARD_ERROR_NOFILE; if((ret=__card_getcntrlblock(file->chn,&card))<0) return ret; - + file->chn = -1; __card_putcntrlblock(card,CARD_ERROR_READY); return CARD_ERROR_READY; @@ -2919,13 +2912,13 @@ s32 CARD_DeleteAsync(s32 chn,const char *filename,cardcallback callback) __card_putcntrlblock(card,ret); return ret; } - + dirblock = __card_getdirblock(card); entry = &dirblock->entries[fileno]; - + card->curr_fileblock = entry->block; memset(entry,-1,sizeof(struct card_direntry)); - + cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; @@ -2963,13 +2956,13 @@ s32 CARD_DeleteEntryAsync(s32 chn,card_dir *dir_entry,cardcallback callback) __card_putcntrlblock(card,ret); return ret; } - + dirblock = __card_getdirblock(card); entry = &dirblock->entries[fileno]; - + card->curr_fileblock = entry->block; memset(entry,-1,sizeof(struct card_direntry)); - + cb = callback; if(!cb) cb = __card_defaultapicallback; card->card_api_cb = cb; @@ -3021,76 +3014,76 @@ s32 CARD_GetErrorCode(s32 chn) return card->result; } -static s32 __card_findnext(card_dir *dir) -{ - s32 ret; - struct card_dat *dirblock = NULL; - struct card_direntry *entries = NULL; - card_block *card = NULL; +static s32 __card_findnext(card_dir *dir) +{ + s32 ret; + struct card_dat *dirblock = NULL; + struct card_direntry *entries = NULL; + card_block *card = NULL; - if(dir->chnchn>=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - if(dir->fileno>=CARD_MAXFILES) return CARD_ERROR_NOFILE; - if((ret=__card_getcntrlblock(dir->chn,&card))<0) return ret; + if(dir->chnchn>=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if(dir->fileno>=CARD_MAXFILES) return CARD_ERROR_NOFILE; + if((ret=__card_getcntrlblock(dir->chn,&card))<0) return ret; - if(!card->attached) return CARD_ERROR_NOCARD; - dirblock = __card_getdirblock(card); + if(!card->attached) return CARD_ERROR_NOCARD; + dirblock = __card_getdirblock(card); - entries = dirblock->entries; - do { - //printf("%s\n", entries[dir->fileno].filename); - if(entries[dir->fileno].gamecode[0]!=0xff) { - if ((dir->showall || memcmp(entries[dir->fileno].gamecode,card_gamecode,4)==0) - && (dir->showall || memcmp(entries[dir->fileno].company,card_company,2)==0)) { + entries = dirblock->entries; + do { + //printf("%s\n", entries[dir->fileno].filename); + if(entries[dir->fileno].gamecode[0]!=0xff) { + if ((dir->showall || memcmp(entries[dir->fileno].gamecode,card_gamecode,4)==0) + && (dir->showall || memcmp(entries[dir->fileno].company,card_company,2)==0)) { dir->filelen = entries[dir->fileno].length*card->sector_size; - memcpy(dir->filename, entries[dir->fileno].filename, CARD_FILENAMELEN); - memcpy(dir->gamecode, entries[dir->fileno].gamecode, 4); - memcpy(dir->company, entries[dir->fileno].company, 2); - - __card_putcntrlblock(card,CARD_ERROR_READY); - return CARD_ERROR_READY; - } - } - dir->fileno++; - } while (dir->fileno < CARD_MAXFILES); - __card_putcntrlblock(card,CARD_ERROR_NOFILE); - return CARD_ERROR_NOFILE; -} - -s32 CARD_FindFirst(s32 chn, card_dir *dir, bool showall) -{ - // initialise structure - dir->chn = chn; - dir->fileno = 0; + memcpy(dir->filename, entries[dir->fileno].filename, CARD_FILENAMELEN); + memcpy(dir->gamecode, entries[dir->fileno].gamecode, 4); + memcpy(dir->company, entries[dir->fileno].company, 2); + + __card_putcntrlblock(card,CARD_ERROR_READY); + return CARD_ERROR_READY; + } + } + dir->fileno++; + } while (dir->fileno < CARD_MAXFILES); + __card_putcntrlblock(card,CARD_ERROR_NOFILE); + return CARD_ERROR_NOFILE; +} + +s32 CARD_FindFirst(s32 chn, card_dir *dir, bool showall) +{ + // initialise structure + dir->chn = chn; + dir->fileno = 0; dir->filelen = 0; - dir->filename[0] = 0; - dir->gamecode[0] = 0; - dir->company[0] = 0; + dir->filename[0] = 0; + dir->gamecode[0] = 0; + dir->company[0] = 0; dir->showall = showall; - return __card_findnext(dir); -} + return __card_findnext(dir); +} -s32 CARD_FindNext(card_dir *dir) -{ - dir->fileno++; +s32 CARD_FindNext(card_dir *dir) +{ + dir->fileno++; - return __card_findnext(dir); + return __card_findnext(dir); } s32 CARD_GetDirectory(s32 chn,card_dir *dir_entries,s32 *count,bool showall) { s32 i,cnt; - s32 ret = CARD_ERROR_READY; - struct card_dat *dirblock = NULL; - struct card_direntry *entries = NULL; - card_block *card = NULL; + s32 ret = CARD_ERROR_READY; + struct card_dat *dirblock = NULL; + struct card_direntry *entries = NULL; + card_block *card = NULL; - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - if((ret=__card_getcntrlblock(chn,&card))<0) return ret; + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; - if(!card->attached) return CARD_ERROR_NOCARD; - dirblock = __card_getdirblock(card); + if(!card->attached) return CARD_ERROR_NOCARD; + dirblock = __card_getdirblock(card); - entries = dirblock->entries; + entries = dirblock->entries; for(i=0,cnt=0;i=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - if((ret=__card_getcntrlblock(chn,&card))<0) return ret; + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; *sector_size = card->sector_size; - ret = __card_putcntrlblock(card,CARD_ERROR_READY); + ret = __card_putcntrlblock(card,CARD_ERROR_READY); return ret; } s32 CARD_GetBlockCount(s32 chn,u32 *block_count) { - s32 ret; - card_block *card = NULL; + s32 ret; + card_block *card = NULL; - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; - if((ret=__card_getcntrlblock(chn,&card))<0) return ret; + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; *block_count = card->blocks; - ret = __card_putcntrlblock(card,CARD_ERROR_READY); + ret = __card_putcntrlblock(card,CARD_ERROR_READY); return ret; } s32 CARD_GetStatus(s32 chn,s32 fileno,card_stat *stats) { - s32 ret; + s32 ret; card_block *card = NULL; struct card_dat *dirblock = NULL; struct card_direntry *entry = NULL; - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(fileno<0 || fileno>=CARD_MAXFILES) return CARD_ERROR_FATAL_ERROR; - if((ret=__card_getcntrlblock(chn,&card))<0) return ret; - + if((ret=__card_getcntrlblock(chn,&card))<0) return ret; + dirblock = __card_getdirblock(card); if(dirblock) { entry = &dirblock->entries[fileno]; @@ -3177,12 +3170,12 @@ s32 CARD_SetStatusAsync(s32 chn,s32 fileno,card_stat *stats,cardcallback callbac struct card_dat *dirblock = NULL; struct card_direntry *entry = NULL; - if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; + if(chn=EXI_CHANNEL_2) return CARD_ERROR_NOCARD; if(fileno<0 || fileno>=CARD_MAXFILES) return CARD_ERROR_FATAL_ERROR; if(stats->icon_addr!=-1 && stats->icon_addr>=CARD_READSIZE) return CARD_ERROR_FATAL_ERROR; if(stats->comment_addr!=-1 && (stats->comment_addr%8192)>8128) return CARD_ERROR_FATAL_ERROR; if((ret=__card_getcntrlblock(chn,&card))<0) return ret; - + ret = CARD_ERROR_BROKEN; dirblock = __card_getdirblock(card); if(dirblock) { @@ -3193,7 +3186,7 @@ s32 CARD_SetStatusAsync(s32 chn,s32 fileno,card_stat *stats,cardcallback callbac entry->iconspeed = stats->icon_speed; entry->commentaddr = stats->comment_addr; __card_updateiconoffsets(entry,stats); - + if(entry->iconaddr==-1) entry->iconspeed = ((entry->iconspeed&~CARD_SPEED_MASK)|CARD_SPEED_FAST); entry->lastmodified = time(NULL); @@ -3254,7 +3247,7 @@ s32 CARD_SetCompany(const char *company) for(i=0;i<2;i++) card_company[i] = 0xff; if(company && strlen(company)<=2) memcpy(card_company,company,2) ; _CPU_ISR_Restore(level); - + return CARD_ERROR_READY; } @@ -3266,6 +3259,6 @@ s32 CARD_SetGamecode(const char *gamecode) for(i=0;i<4;i++) card_gamecode[i] = 0xff; if(gamecode && strlen(gamecode)<=4) memcpy(card_gamecode,gamecode,4) ; _CPU_ISR_Restore(level); - + return CARD_ERROR_READY; } diff --git a/libogc/dsp.c b/libogc/dsp.c index 730e421e..2ba59372 100644 --- a/libogc/dsp.c +++ b/libogc/dsp.c @@ -31,6 +31,7 @@ distribution. #include #include +#include "gcutil.h" #include "asm.h" #include "processor.h" #include "irq.h" @@ -51,11 +52,6 @@ distribution. #define DSPCR_PIINT 0x0002 // assert DSP PI interrupt #define DSPCR_RES 0x0001 // reset DSP -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - static u32 __dsp_inited = FALSE; static u32 __dsp_rudetask_pend = FALSE; static DSPCallback __dsp_intcb = NULL; diff --git a/libogc/dvd.c b/libogc/dvd.c index 4db3fd2f..1f517db8 100644 --- a/libogc/dvd.c +++ b/libogc/dvd.c @@ -134,11 +134,6 @@ distribution. #define cpu_to_le32(x) (((x>>24)&0x000000ff) | ((x>>8)&0x0000ff00) | ((x<<8)&0x00ff0000) | ((x<<24)&0xff000000)) #define dvd_may_retry(s) (DVD_STATUS(s) == DVD_STATUS_READY || DVD_STATUS(s) == DVD_STATUS_DISK_ID_NOT_READ) -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - typedef void (*dvdcallbacklow)(s32); typedef void (*dvdstatecb)(dvdcmdblk *); @@ -2878,7 +2873,7 @@ static bool __gcdvd_IsInserted(void) u32 status = 0; DVD_LowGetStatus(&status, NULL); - if(DVD_STATUS(status) == DVD_STATUS_READY) + if(DVD_STATUS(status) == DVD_STATUS_READY) return true; return false; diff --git a/libogc/exi.c b/libogc/exi.c index 8154d958..c34e96e5 100644 --- a/libogc/exi.c +++ b/libogc/exi.c @@ -36,6 +36,7 @@ distribution. #include "processor.h" #include "spinlock.h" #include "exi.h" +#include "gcutil.h" //#define _EXI_DEBUG @@ -53,11 +54,6 @@ distribution. #define EXI_EXT_IRQ 0x0800 #define EXI_EXT_BIT 0x1000 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - struct _lck_dev { lwp_node node; diff --git a/libogc/gx.c b/libogc/gx.c index 03960ffc..b06aa218 100644 --- a/libogc/gx.c +++ b/libogc/gx.c @@ -25,11 +25,6 @@ #define LARGE_NUMBER (-1.0e+18f) #endif -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - #define GX_LOAD_BP_REG(x) \ do { \ wgPipe->U8 = 0x61; \ diff --git a/libogc/irq.c b/libogc/irq.c index c34d1e26..37f403a2 100644 --- a/libogc/irq.c +++ b/libogc/irq.c @@ -43,11 +43,6 @@ distribution. #define CPU_STACK_ALIGNMENT 8 #define CPU_MINIMUM_STACK_FRAME_SIZE 16 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - struct irq_handler_s { raw_irq_handler_t pHndl; void *pCtx; diff --git a/libogc/pad.c b/libogc/pad.c index 9ab0639f..9a22e6d8 100644 --- a/libogc/pad.c +++ b/libogc/pad.c @@ -14,11 +14,6 @@ #define PAD_PRODPADS 6 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - #define PAD_ENABLEDMASK(chan) (0x80000000>>chan) typedef struct _keyinput { diff --git a/libogc/sdgecko_io.c b/libogc/sdgecko_io.c index aa553169..fe4c96da 100644 --- a/libogc/sdgecko_io.c +++ b/libogc/sdgecko_io.c @@ -41,11 +41,6 @@ #define CARDIO_OP_IOERR_ILL 0x0001 #define CARDIO_OP_IOERR_FATAL (CARDIO_OP_IOERR_PARAM|CARDIO_OP_IOERR_WRITE|CARDIO_OP_IOERR_ADDR|CARDIO_OP_IOERR_CRC|CARDIO_OP_IOERR_ILL) -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - typedef s32 (*cardiocallback)(s32 drv_no); u8 g_CID[MAX_DRIVE][16]; @@ -54,7 +49,7 @@ u8 g_CardStatus[MAX_DRIVE][64]; u8 g_mCode[MAX_MI_NUM] = { 0x03 }; -u16 g_dCode[MAX_MI_NUM][MAX_DI_NUM] = +u16 g_dCode[MAX_MI_NUM][MAX_DI_NUM] = { { 0x033f, /* SD 8Mb */ @@ -155,10 +150,10 @@ static u8 __make_crc7(void *buffer,u32 len) res |= 0x01; if(!(res&0x0008)) res |= 0x0008; else res &= ~0x0008; - + } else if(res&0x0008) res |= 0x0008; else res &= ~0x0008; - + mask >>= 1; bcnt++; } @@ -235,7 +230,7 @@ static u16 __make_crc16(void *buffer,u32 len) ptr++; cnt++; } - + return (res&0xffff); } */ @@ -332,7 +327,7 @@ static s32 __card_writecmd0(s32 drv_no) return CARDIO_ERROR_NOCARD; } - + cnt = 0; while(cnt<20) { if(EXI_ImmEx(drv_no,dummy,128,EXI_WRITE)==0) { @@ -343,7 +338,7 @@ static s32 __card_writecmd0(s32 drv_no) cnt++; } EXI_Deselect(drv_no); - + if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { EXI_Unlock(drv_no); return CARDIO_ERROR_NOCARD; @@ -364,7 +359,7 @@ static s32 __card_writecmd0(s32 drv_no) EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_READY; @@ -390,13 +385,13 @@ static s32 __card_writecmd(s32 drv_no,void *buf,s32 len) } for(cnt=0;cnt<32;cnt++) dummy[cnt] = 0xff; - + if(EXI_ImmEx(drv_no,dummy,10,EXI_WRITE)==0) { EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + crc |= 0x01; #ifdef _CARDIO_DEBUG printf("sd command: %02x %02x %02x %02x %02x %02x\n",((u8*)buf)[0],((u8*)buf)[1],((u8*)buf)[2],((u8*)buf)[3],((u8*)buf)[4],crc); @@ -411,7 +406,7 @@ static s32 __card_writecmd(s32 drv_no,void *buf,s32 len) EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_READY; @@ -451,7 +446,7 @@ static s32 __card_readresponse(s32 drv_no,void *buf,s32 len) *(++ptr) = 0xff; if(EXI_ImmEx(drv_no,ptr,len-1,EXI_READWRITE)==0) ret = CARDIO_ERROR_IOERROR; } - + EXI_Deselect(drv_no); EXI_Unlock(drv_no); return ret; @@ -465,7 +460,7 @@ static s32 __card_stopreadresponse(s32 drv_no,void *buf,s32 len) if(drv_no<0 || drv_no>=MAX_DRIVE) return CARDIO_ERROR_NOCARD; ptr = buf; - + __exi_wait(drv_no); if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { @@ -553,7 +548,7 @@ static s32 __card_stopreadresponse(s32 drv_no,void *buf,s32 len) *(++ptr) = 0xff; if(EXI_ImmEx(drv_no,ptr,len-1,EXI_READWRITE)==0) ret = CARDIO_ERROR_IOERROR; } - + EXI_Deselect(drv_no); EXI_Unlock(drv_no); return ret; @@ -567,7 +562,7 @@ static s32 __card_datares(s32 drv_no,void *buf) if(drv_no<0 || drv_no>=MAX_DRIVE) return CARDIO_ERROR_NOCARD; ptr = buf; - + __exi_wait(drv_no); if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { @@ -685,7 +680,7 @@ static s32 __card_dataread(s32 drv_no,void *buf,u32 len) if(drv_no<0 || drv_no>=MAX_DRIVE) return CARDIO_ERROR_NOCARD; __exi_wait(drv_no); - + if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { EXI_Unlock(drv_no); return CARDIO_ERROR_NOCARD; @@ -702,7 +697,7 @@ static s32 __card_dataread(s32 drv_no,void *buf,u32 len) #ifdef _CARDIO_DEBUG printf("sd response: %02x\n",((u8*)buf)[0]); #endif - + startT = gettick(); while(*ptr!=0xfe) { *ptr = 0xff; @@ -773,7 +768,7 @@ static s32 __card_multidatawrite(s32 drv_no,void *buf,u32 len) for(cnt=0;cnt<32;cnt++) dummy[cnt] = 0xff; crc = __make_crc16(buf,len); - + __exi_wait(drv_no); if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { @@ -793,7 +788,7 @@ static s32 __card_multidatawrite(s32 drv_no,void *buf,u32 len) EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + /* sleep 1us*/ usleep(1); @@ -816,12 +811,12 @@ static s32 __card_multiwritestop(s32 drv_no) for(cnt=0;cnt<32;cnt++) dummy[cnt] = 0xff; __exi_wait(drv_no); - + if(EXI_Select(drv_no,EXI_DEVICE_0,_ioCardFreq[drv_no])==0) { EXI_Unlock(drv_no); return CARDIO_ERROR_NOCARD; } - + ret = CARDIO_ERROR_READY; dummy[0] = 0xfd; if(EXI_ImmEx(drv_no,dummy,1,EXI_WRITE)==0) { @@ -836,28 +831,28 @@ static s32 __card_multiwritestop(s32 drv_no) EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + dummy[0] = 0xff; if(EXI_ImmEx(drv_no,dummy,1,EXI_READWRITE)==0) { EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + dummy[0] = 0xff; if(EXI_ImmEx(drv_no,dummy,1,EXI_READWRITE)==0) { EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + dummy[0] = 0xff; if(EXI_ImmEx(drv_no,dummy,1,EXI_READWRITE)==0) { EXI_Deselect(drv_no); EXI_Unlock(drv_no); return CARDIO_ERROR_IOERROR; } - + startT = gettick(); ret = CARDIO_ERROR_READY; while(dummy[0]==0) { @@ -890,7 +885,7 @@ static s32 __card_response1(s32 drv_no) s32 ret; if(drv_no<0 || drv_no>=MAX_DRIVE) return CARDIO_ERROR_NOCARD; - + if((ret=__card_readresponse(drv_no,_ioResponse[drv_no],1))!=0) return ret; return __check_response(drv_no,_ioResponse[drv_no][0]); } @@ -900,7 +895,7 @@ static s32 __card_response2(s32 drv_no) u32 ret; if(drv_no<0 || drv_no>=MAX_DRIVE) return CARDIO_ERROR_NOCARD; - + if((ret=__card_readresponse(drv_no,_ioResponse[drv_no],2))!=0) return ret; if(!(_ioResponse[drv_no][0]&0x7c) && !(_ioResponse[drv_no][1]&0x9e)) return CARDIO_ERROR_READY; return CARDIO_ERROR_FATALERROR; @@ -1061,7 +1056,7 @@ static s32 __card_setblocklen(s32 drv_no,u32 block_len) } if((ret=__card_readresponse(drv_no,_ioResponse[drv_no],1))<0) return ret; ret = __check_response(drv_no,_ioResponse[drv_no][0]); - + return ret; } @@ -1131,7 +1126,7 @@ static s32 __card_sd_status(s32 drv_no) if((ret=__card_sendcmd(drv_no,0x0d,NULL))!=0) return ret; if((ret=__card_response2(drv_no))!=0) return ret; ret = __card_dataread(drv_no,g_CardStatus[drv_no],64); - + return ret; } @@ -1150,7 +1145,7 @@ static s32 __card_softreset(s32 drv_no) #endif return ret; } - + if((ret=__card_readresponse(drv_no,_ioResponse[drv_no],1))!=0) return ret; return __check_response(drv_no,_ioResponse[drv_no][0]); } @@ -1159,9 +1154,9 @@ static bool __card_check(s32 drv_no) { u32 id = 0; s32 ret; - + if(drv_no<0 || drv_no>=MAX_DRIVE) return FALSE; -#ifdef _CARDIO_DEBUG +#ifdef _CARDIO_DEBUG printf("__card_check(%d)\n",drv_no); #endif while((ret=EXI_ProbeEx(drv_no))==0); @@ -1172,7 +1167,7 @@ static bool __card_check(s32 drv_no) if(drv_no!=2) { if(!(EXI_GetState(drv_no)&EXI_FLAG_ATTACH)) { if(EXI_Attach(drv_no,__card_exthandler)==0) return FALSE; -#ifdef _CARDIO_DEBUG +#ifdef _CARDIO_DEBUG printf("__card_check(%d, attached)\n",drv_no); #endif sdgecko_insertedCB(drv_no); @@ -1183,7 +1178,7 @@ static bool __card_check(s32 drv_no) static s32 __card_retrycb(s32 drv_no) { -#ifdef _CARDIO_DEBUG +#ifdef _CARDIO_DEBUG printf("__card_retrycb(%d)\n",drv_no); #endif _ioRetryCB = NULL; @@ -1209,7 +1204,7 @@ static void __convert_sector(s32 drv_no,u32 sector_no,u8 *arg) void sdgecko_initIODefault(void) { u32 i; -#ifdef _CARDIO_DEBUG +#ifdef _CARDIO_DEBUG printf("card_initIODefault()\n"); #endif __init_crc7(); @@ -1234,7 +1229,7 @@ s32 sdgecko_initIO(s32 drv_no) _ioRetryCnt = 0; return CARDIO_ERROR_IOERROR; } - + _ioCardInserted[drv_no] = __card_check(drv_no); if(_ioCardInserted[drv_no]==TRUE) { @@ -1262,7 +1257,7 @@ s32 sdgecko_initIO(s32 drv_no) } _ioPageSize[drv_no] = PAGE_SIZE512; - if(__card_setblocklen(drv_no,_ioPageSize[drv_no])!=0) goto exit; + if(__card_setblocklen(drv_no,_ioPageSize[drv_no])!=0) goto exit; if(__card_sd_status(drv_no)!=0) goto exit; @@ -1283,7 +1278,7 @@ s32 sdgecko_preIO(s32 drv_no) if(_ioFlag[drv_no]!=INITIALIZED) { ret = sdgecko_initIO(drv_no); if(ret!=CARDIO_ERROR_READY) { -#ifdef _CARDIO_DEBUG +#ifdef _CARDIO_DEBUG printf("sdgecko_preIO(%d,ret = %d)\n",drv_no,ret); #endif return ret; @@ -1302,7 +1297,7 @@ s32 sdgecko_readCID(s32 drv_no) #endif ret = sdgecko_preIO(drv_no); if(ret!=0) return ret; - + return __card_readcid(drv_no); } @@ -1408,7 +1403,7 @@ s32 sdgecko_writeSectors(s32 drv_no,u32 sector_no,u32 num_sectors,const void *bu // SDHC support fix __convert_sector(drv_no,sector_no,arg); - + if((ret=__card_sendcmd(drv_no,0x19,arg))!=0) return ret; if((ret=__card_response1(drv_no))!=0) return ret; diff --git a/libogc/si.c b/libogc/si.c index 5a54e4b8..203028ad 100644 --- a/libogc/si.c +++ b/libogc/si.c @@ -13,11 +13,6 @@ //#define _SI_DEBUG -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - #define SISR_ERRORMASK(chn) (0x0f000000>>((chn)<<3)) #define SIPOLL_ENABLE(chn) (0x80000000>>((chn)+24)) diff --git a/libogc/system.c b/libogc/system.c index 26e03759..a1618618 100644 --- a/libogc/system.c +++ b/libogc/system.c @@ -85,11 +85,6 @@ distribution. return NULL; \ } -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - struct _sramcntrl { u8 srambuf[64]; u32 offset; diff --git a/libogc/usbgecko.c b/libogc/usbgecko.c index a918ea6c..67745649 100644 --- a/libogc/usbgecko.c +++ b/libogc/usbgecko.c @@ -9,12 +9,6 @@ #include "usbgecko.h" -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - - static u32 usbgecko_inited = 0; static lwpq_t wait_exi_queue[3]; diff --git a/libogc/video.c b/libogc/video.c index b54af49e..007b1717 100644 --- a/libogc/video.c +++ b/libogc/video.c @@ -50,11 +50,6 @@ video.c -- VIDEO subsystem #define VIDEO_MQ 1 -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - #define VI_REGCHANGE(_reg) \ ((u64)0x01<<(63-_reg)) diff --git a/lwip/arch/gc/netif/gcif.c b/lwip/arch/gc/netif/gcif.c index 6bc0e9ce..b1d5fc23 100644 --- a/lwip/arch/gc/netif/gcif.c +++ b/lwip/arch/gc/netif/gcif.c @@ -178,11 +178,6 @@ struct bba_descr { u32 X(X(next_packet_ptr:12, packet_len:12), status:8); } __attribute((packed)); -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - struct bba_priv { u8 flag;