void michael_key(const u_int8_t *key, MICHAEL_CTX *ctx) { ctx->michael_l = ctx->michael_key[0] = GETLE32(key); ctx->michael_r = ctx->michael_key[1] = GETLE32(key + MICHAEL_RAW_BLOCK_LENGTH); }
static int wi_pcmcia_write_firm(struct wi_softc *sc, const void *buf, int buflen, const void *ebuf, int ebuflen) { const u_int8_t *p, *ep, *q, *eq; char *endp; u_int32_t addr, id, eid; int i, len, elen, nblk, pdrlen; /* * Parse the header of the firmware image. */ p = buf; ep = p + buflen; while (p < ep && *p++ != ' '); /* FILE: */ while (p < ep && *p++ != ' '); /* filename */ while (p < ep && *p++ != ' '); /* type of the firmware */ nblk = strtoul(p, &endp, 10); p = (void *)endp; pdrlen = strtoul(p + 1, &endp, 10); p = (void *)endp; while (p < ep && *p++ != 0x1a); /* skip rest of header */ /* * Block records: address[4], length[2], data[length]; */ for (i = 0; i < nblk; i++) { addr = GETLE32(p); p += 4; len = GETLE16(p); p += 2; CSR_WRITE_2(sc, WI_AUX_PAGE, addr / WI_AUX_PGSZ); CSR_WRITE_2(sc, WI_AUX_OFFSET, addr % WI_AUX_PGSZ); CSR_WRITE_MULTI_STREAM_2(sc, WI_AUX_DATA, (const u_int16_t *)p, len / 2); p += len; } /* * PDR: id[4], address[4], length[4]; */ for (i = 0; i < pdrlen; ) { id = GETLE32(p); p += 4; i += 4; addr = GETLE32(p); p += 4; i += 4; len = GETLE32(p); p += 4; i += 4; /* replace PDR entry with the values from EEPROM, if any */ for (q = ebuf, eq = q + ebuflen; q < eq; q += elen * 2) { elen = GETLE16(q); q += 2; eid = GETLE16(q); q += 2; elen--; /* elen includes eid */ if (eid == 0) break; if (eid != id) continue; CSR_WRITE_2(sc, WI_AUX_PAGE, addr / WI_AUX_PGSZ); CSR_WRITE_2(sc, WI_AUX_OFFSET, addr % WI_AUX_PGSZ); CSR_WRITE_MULTI_STREAM_2(sc, WI_AUX_DATA, (const u_int16_t *)q, len / 2); break; } } return 0; }
void CALLBACK GPUwriteDataMem(uint32_t * pMem, int iSize) { _TR unsigned char command; uint32_t gdata = 0; int i = 0; GPUIsBusy; GPUIsNotReadyForCommands; STARTVRAM: if (DataWriteMode == DR_VRAMTRANSFER) { BOOL bFinished = FALSE; // make sure we are in vram while (VRAMWrite.ImagePtr >= psxVuw_eom) VRAMWrite.ImagePtr -= iGPUHeight * 1024; while (VRAMWrite.ImagePtr < psxVuw) VRAMWrite.ImagePtr += iGPUHeight * 1024; // now do the loop while (VRAMWrite.ColsRemaining > 0) { while (VRAMWrite.RowsRemaining > 0) { if (i >= iSize) { goto ENDVRAM; } i++; gdata = GETLE32(pMem); pMem++; PUTLE16(VRAMWrite.ImagePtr, (unsigned short) gdata); VRAMWrite.ImagePtr++; if (VRAMWrite.ImagePtr >= psxVuw_eom) VRAMWrite.ImagePtr -= iGPUHeight * 1024; VRAMWrite.RowsRemaining--; if (VRAMWrite.RowsRemaining <= 0) { VRAMWrite.ColsRemaining--; if (VRAMWrite.ColsRemaining <= 0) // last pixel is odd width { gdata = (gdata & 0xFFFF) | (((uint32_t) GETLE16(VRAMWrite.ImagePtr)) << 16); FinishedVRAMWrite(); bDoVSyncUpdate = TRUE; goto ENDVRAM; } VRAMWrite.RowsRemaining = VRAMWrite.Width; VRAMWrite.ImagePtr += 1024 - VRAMWrite.Width; } PUTLE16(VRAMWrite.ImagePtr, (unsigned short) (gdata >> 16)); VRAMWrite.ImagePtr++; if (VRAMWrite.ImagePtr >= psxVuw_eom) VRAMWrite.ImagePtr -= iGPUHeight * 1024; VRAMWrite.RowsRemaining--; } VRAMWrite.RowsRemaining = VRAMWrite.Width; VRAMWrite.ColsRemaining--; VRAMWrite.ImagePtr += 1024 - VRAMWrite.Width; bFinished = TRUE; } FinishedVRAMWrite(); if (bFinished) bDoVSyncUpdate = TRUE; }