MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / FLASHwrite32

Function FLASHwrite32

pcsx2/DEV9/flash.cpp:164–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

162}
163
164void FLASHwrite32(u32 addr, u32 value, int size)
165{
166
167 switch (addr & 0x1FFFFFFF)
168 {
169 case FLASH_R_DATA:
170
171 DevCon.WriteLn("DEV9: *FLASH DATA %dbit write 0x%08lX %s", size * 8, value, (ctrl & FLASH_PP_WRITE) ? "WRITE_ENABLE" : "WRITE_DISABLE");
172 memcpy(&data[counter], &value, size);
173 counter += size;
174 counter %= PAGE_SIZE_ECC; //should not get past the last byte, but at the end
175 break;
176
177 case FLASH_R_CMD:
178 if (!(ctrl & FLASH_PP_READY))
179 {
180 if ((value != SM_CMD_GETSTATUS) && (value != SM_CMD_RESET))
181 {
182 DevCon.WriteLn("DEV9: *FLASH CMD %dbit write %s ILLEGAL in busy mode - IGNORED", size * 8, getCmdName(value));
183 break;
184 }
185 }
186 if (cmd == SM_CMD_WRITEDATA)
187 {
188 if ((value != SM_CMD_PROGRAMPAGE) && (value != SM_CMD_RESET))
189 {
190 DevCon.WriteLn("DEV9: *FLASH CMD %dbit write %s ILLEGAL after WRITEDATA cmd - IGNORED", size * 8, getCmdName(value));
191 ctrl &= ~FLASH_PP_READY; //go busy, reset is needed
192 break;
193 }
194 }
195 DevCon.WriteLn("DEV9: *FLASH CMD %dbit write %s", size * 8, getCmdName(value));
196 switch (value)
197 { // A8 bit is encoded in READ cmd;)
198 case SM_CMD_READ1:
199 counter = 0;
200 if (cmd != SM_CMD_GETSTATUS)
201 address = counter;
202 addrbyte = 0;
203 break;
204 case SM_CMD_READ2:
205 counter = PAGE_SIZE / 2;
206 if (cmd != SM_CMD_GETSTATUS)
207 address = counter;
208 addrbyte = 0;
209 break;
210 case SM_CMD_READ3:
211 counter = PAGE_SIZE;
212 if (cmd != SM_CMD_GETSTATUS)
213 address = counter;
214 addrbyte = 0;
215 break;
216 case SM_CMD_RESET:
217 FLASHinit();
218 break;
219 case SM_CMD_WRITEDATA:
220 counter = 0;
221 address = counter;

Callers 3

DEV9write8Function · 0.85
DEV9write16Function · 0.85
DEV9write32Function · 0.85

Calls 4

getCmdNameFunction · 0.85
FLASHinitFunction · 0.85
calculateECCFunction · 0.85
WriteLnMethod · 0.45

Tested by

no test coverage detected