/* Generic no libc std parts. */ #include /* Compiler depends on them with low optimization level. */ void *memcpy(void *__restrict dest, const void *__restrict src, size_t n) { for (size_t i = 0; i < n; ++i) ((char *)dest)[i] = ((char *)src)[i]; return dest; }; void *memset(void *__restrict dest, int s, size_t n) { for (size_t i = 0; i < n; ++i) ((char *)dest)[i] = s; return dest; }; size_t strlen(char const *s) { char const *p = s; for (; *p != 0; ++p) { } return p - s; } double com_std_sin(double v) { double result; __asm__ __volatile__("fldl %1\n\t" "fsin\n\t" "fstpl %0" : "=g"(result) : "m"(v) : "st", "st(1)"); return result; } double com_std_cos(double v) { double result; __asm__ __volatile__("fldl %1\n\t" "fcos\n\t" "fstpl %0" : "=g"(result) : "m"(v)); return result; }