wfi
lyszt.net obejmuje wfi i inne instrukcje RISC-V w większych szczegółach.
Opis
wfi zatrzymuje program do momentu nadejścia przerwania. Litery oznaczają wait for interrupt (oczekiwanie na przerwanie). Program, który nie ma nic do zrobienia, czeka tutaj bezczynnie, zamiast kręcić się w pętli przez instrukcje. Nie przyjmuje operandów.
wfi
Procesor zatrzymuje się na wfi i wznawia działanie, gdy przerwanie jest oczekujące, a jego bit włączenia w mie jest ustawiony. W tym symulatorze ma to miejsce, gdy zostanie naciśnięty przycisk, a przerwanie przycisku jest włączone. Symulator wyświetla stan oczekiwania na przerwanie i nie wykonuje w tym czasie żadnych instrukcji.
To, co dzieje się dalej, zależy od mstatus. Jeśli globalny bit włączenia przerwań jest ustawiony, procesor obsługuje przerwanie zaraz po wybudzeniu. Pułapka zapisuje adres instrukcji po wfi do mepc, uruchamia się procedura obsługi, a mret wraca do instrukcji po wfi. Jeśli globalny bit włączenia jest wyczyszczony, procesor wybudza się i przechodzi do instrukcji po wfi bez uruchamiania procedury obsługi.
Program, który czeka bezczynnie między naciśnięciami przycisku, konfiguruje mtvec, mie i mstatus, a następnie powtarza wfi w pętli.
loop: wfi j loop
Gdy żadne przerwanie nie jest włączone, wfi czeka wiecznie, więc włącz przerwanie przed dotarciem do niego. csrs włącza bity włączenia, a mret wraca z procedury obsługi.
Przykład
csrsi mstatus, 8 # allow interrupts wfi # idles here until the button is pressed
