Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
⣿⣧⠄⠁⠄⠔⠒⠭⠭⠥⠥⠓⠄⢀⣴⣿⣿⡄⠁⠠⣤⠉⠉⣭⠝⠈⢐⣽⣕
⣿⣷⡢⢄⡰⡢⡙⠄⠠⠛⠁⢀⢔⣵⣿⣿⣿⣿⣧⣄⡈⠁⠈⠁⠉⡹⣽⣿⣷
⣿⣿⣿⣿⣿⣬⣭⡭⠔⣠⣪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡒⠫⠿⣿⣿⣿
⣿⣿⣿⣿⠿⣛⣥⣶⣿⠟⢁⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣶⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡫⠁⢀⠑⠓⠫⢝⢟⣿⣿⣿⣿⡻⠊⢉⣄⠈⠪⡫⢿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⠁⣰⣿⣿⣢⢤⣀⡀⠈⠉⠉⢀⠠⠪⢝⡻⣷⡀⠊⡪⡻⣿
⡫⢟⣿⣿⣿⣿⡊⢠⣿⣿⡫⠚⣊⣡⠶⢦⣤⣤⠶⠞⡛⠳⣌⠫⡻⡀⠈⡺⢿
⠪⡪⡫⢟⡿⣕⠁⡫⠝⠊⡴⠋⠁⠁⠐⠁⠂⠈⠐⠈⠈⠐⠐⠳⠄⠹⣇⠪⡻
⠄⠁⠊⠕⡪⢕⢀⠞⠁⠄⣁⢀⢀⣀⣤⣤⣠⣀⣤⣴⣶⣶⣶⡆⠄⠆⢷⠕⡪
⣄⠄⠁⠄⠁⠄⡎⠄⠁⢬⣮⣕⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡪⡵⠄⠁⠄⠈
#include "list.hpp"
class _thread;
class Scheduler {
private:
static List<_thread> readyCoroutineQueue;
public:
static _thread *get();
static void put(_thread *ccb);
};
uint64 volatile a3;
__asm__ volatile ("ld %0, 13*8(fp)" : "=r"(a3));
return a3;
}
inline void Riscv::w_a4(uint64 a4) {
__asm__ volatile ("mv a4, %0" : : "r"(a4));
}
inline uint64 Riscv::r_a4() {
uint64 volatile a4;
__asm__ volatile ("ld %0, 14*8(fp)" : "=r"(a4));
return a4;
}
inline void Riscv::w_a0_stack(uint64 a0) {
__asm__ volatile ("sd %0, 10*8(fp)" : : "r"(a0));
}
long volatile a0;
__asm__ volatile ("ld %0, 10*8(fp)" : "=r"(a0));
return a0;
}
inline void Riscv::w_a1(uint64 a1) {
__asm__ volatile ("mv a1, %0" : : "r"(a1));
}
inline uint64 Riscv::r_a1() {
uint64 volatile a1;
__asm__ volatile ("ld %0, 11*8(fp)" : "=r"(a1));
return a1;
}
inline void Riscv::w_a2(uint64 a2) {
__asm__ volatile ("mv a2, %0" : : "r"(a2));
}
inline uint64 Riscv::r_a2() {
uint64 volatile a2;
__asm__ volatile ("ld %0, 12*8(fp)" : "=r"(a2));
return a2;
}
inline void Riscv::w_a3(uint64 a3) {
__asm__ volatile ("mv a3, %0" : : "r"(a3));
}