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

Function smap_write8

pcsx2/DEV9/smap.cpp:539–608  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

537}
538
539void smap_write8(u32 addr, u8 value)
540{
541 std::unique_lock<std::mutex> reset_lock(reset_mutex, std::defer_lock);
542 std::unique_lock<std::mutex> counter_lock(frame_counter_mutex, std::defer_lock);
543 switch (addr)
544 {
545 case SMAP_R_TXFIFO_FRAME_INC:
546 //DevCon.WriteLn("DEV9: SMAP_R_TXFIFO_FRAME_INC 8bit write %x", value);
547 {
548 dev9Ru8(SMAP_R_TXFIFO_FRAME_CNT)++;
549 }
550 return;
551
552 case SMAP_R_RXFIFO_FRAME_DEC:
553 //DevCon.WriteLn("DEV9: SMAP_R_RXFIFO_FRAME_DEC 8bit write %x", value);
554 counter_lock.lock();
555 dev9Ru8(addr) = value;
556 {
557 dev9Ru8(SMAP_R_RXFIFO_FRAME_CNT)--;
558 }
559 counter_lock.unlock();
560 return;
561
562 case SMAP_R_TXFIFO_CTRL:
563 //DevCon.WriteLn("DEV9: SMAP_R_TXFIFO_CTRL 8bit write %x", value);
564 if (value & SMAP_TXFIFO_RESET)
565 {
566 dev9.txbdi = 0;
567 dev9.txfifo_rd_ptr = 0;
568 dev9Ru8(SMAP_R_TXFIFO_FRAME_CNT) = 0; //this actualy needs to be atomic (lock mov ...)
569 dev9Ru32(SMAP_R_TXFIFO_WR_PTR) = 0;
570 dev9Ru32(SMAP_R_TXFIFO_SIZE) = 16384;
571 }
572 value &= ~SMAP_TXFIFO_RESET;
573 dev9Ru8(addr) = value;
574 return;
575
576 case SMAP_R_RXFIFO_CTRL:
577 //DevCon.WriteLn("DEV9: SMAP_R_RXFIFO_CTRL 8bit write %x", value);
578 if (value & SMAP_RXFIFO_RESET)
579 {
580 std::scoped_lock lock(reset_lock, counter_lock);
581 dev9.rxbdi = 0;
582 dev9.rxfifo_wr_ptr = 0;
583 dev9Ru8(SMAP_R_RXFIFO_FRAME_CNT) = 0;
584 dev9Ru32(SMAP_R_RXFIFO_RD_PTR) = 0;
585 dev9Ru32(SMAP_R_RXFIFO_SIZE) = 16384;
586 }
587 value &= ~SMAP_RXFIFO_RESET;
588 dev9Ru8(addr) = value;
589 return;
590
591 case SMAP_R_BD_MODE:
592 if (value & SMAP_BD_SWAP)
593 {
594 DevCon.WriteLn("DEV9: SMAP_R_BD_MODE: Byteswapping enabled.");
595 dev9.bd_swap = 1;
596 }

Callers 1

DEV9write8Function · 0.85

Calls 3

unlockMethod · 0.80
lockMethod · 0.45
WriteLnMethod · 0.45

Tested by

no test coverage detected