// The OS/K Team licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #include #include #include #include //----------------------------------------------------------------------------// IMPL_START_0(nop) { } IMPL_END; //----------------------------------------------------------------------------// IMPL_START_0(pause) { usleep(5000); } IMPL_END; IMPL_START_0(xpause) { CHK_SUPERV(); usleep(25000); } IMPL_END; //----------------------------------------------------------------------------// IMPL_START_0(cpuid) { rax = rdx = 0; } IMPL_END; //----------------------------------------------------------------------------// IMPL_START_1(time) { v1 = time(NULL); } IMPL_OUT; IMPL_START_1(utime) { struct timeval time; gettimeofday(&time, NULL); v1 = (time.tv_sec * 1000) + (time.tv_usec / 1000); } IMPL_OUT; //----------------------------------------------------------------------------// IMPL_START_0(clr) { rax = rbx = rcx = rdx = 0; rsx = rbi = rdi = rsi = 0; } IMPL_END; IMPL_START_0(cla) { ax0 = ax1 = ax2 = ax3 = 0; ax4 = ax5 = ax6 = ax7 = 0; } IMPL_END; //----------------------------------------------------------------------------// IMPL_START_2(bswap) { v1 = ((v2 & 0xFF00000000000000) >> 56) | ((v2 & 0x00FF000000000000) >> 40) | ((v2 & 0x0000FF0000000000) >> 24) | ((v2 & 0x000000FF00000000) >> 8) | ((v2 & 0x00000000FF000000) << 8) | ((v2 & 0x0000000000FF0000) << 24) | ((v2 & 0x000000000000FF00) << 40) | ((v2 & 0x00000000000000FF) << 56); } IMPL_OUT; IMPL_START_2(wswap) { v1 = ((v2 & 0xFFFF000000000000) >> 48) | ((v2 & 0x0000FFFF00000000) >> 16) | ((v2 & 0x00000000FFFF0000) << 16) | ((v2 & 0x000000000000FFFF) << 48); } IMPL_OUT; IMPL_START_2(dswap) { v1 = ((v2 & 0xFFFFFFFF00000000) >> 32) | ((v2 & 0x00000000FFFFFFFF) << 32); } IMPL_OUT; //----------------------------------------------------------------------------//