From 02283e080cbb1857cacde56e9c67b1ae90ab852a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Wed, 20 Jul 2016 21:57:19 +0200 Subject: [PATCH] M68K: drop the custom C arch_cpu_user_mem*() for the default impl I didn't notice there was a C++ version that didn't require writing asm. I'll have to write them anyway for speed someday. --- headers/private/kernel/arch/user_memory.h | 2 + src/system/kernel/arch/m68k/arch_cpu.cpp | 89 ----------------------- 2 files changed, 2 insertions(+), 89 deletions(-) diff --git a/headers/private/kernel/arch/user_memory.h b/headers/private/kernel/arch/user_memory.h index 79461e38a0..e4dd9f0712 100644 --- a/headers/private/kernel/arch/user_memory.h +++ b/headers/private/kernel/arch/user_memory.h @@ -13,6 +13,8 @@ #ifdef __x86_64__ # include +#elif defined(__M68K__) +# include #else extern "C" { diff --git a/src/system/kernel/arch/m68k/arch_cpu.cpp b/src/system/kernel/arch/m68k/arch_cpu.cpp index 0eaeb49b41..8017cb9c85 100644 --- a/src/system/kernel/arch/m68k/arch_cpu.cpp +++ b/src/system/kernel/arch/m68k/arch_cpu.cpp @@ -171,95 +171,6 @@ arch_cpu_user_TLB_invalidate(void) } -// TODO: all functions that use fault handlers need to be implemented -// in assembly due to problems passing in label addresses in gcc4. -status_t -arch_cpu_user_memcpy(void *to, const void *from, size_t size, - addr_t *faultHandler) -{ - char *tmp = (char *)to; - char *s = (char *)from; - addr_t oldFaultHandler = *faultHandler; - -// TODO: This doesn't work correctly with gcc 4 anymore! - if (m68k_set_fault_handler(faultHandler, (addr_t)&&error)) - goto error; - - while (size--) - *tmp++ = *s++; - - *faultHandler = oldFaultHandler; - return 0; - -error: - *faultHandler = oldFaultHandler; - return B_BAD_ADDRESS; -} - - -/** \brief Copies at most (\a size - 1) characters from the string in \a from to - * the string in \a to, NULL-terminating the result. - * - * \param to Pointer to the destination C-string. - * \param from Pointer to the source C-string. - * \param size Size in bytes of the string buffer pointed to by \a to. - * - * \return strlen(\a from). - */ - -ssize_t -arch_cpu_user_strlcpy(char *to, const char *from, size_t size, addr_t *faultHandler) -{ - int from_length = 0; - addr_t oldFaultHandler = *faultHandler; - -// TODO: This doesn't work correctly with gcc 4 anymore! - if (m68k_set_fault_handler(faultHandler, (addr_t)&&error)) - goto error; - - if (size > 0) { - to[--size] = '\0'; - // copy - for ( ; size; size--, from_length++, to++, from++) { - if ((*to = *from) == '\0') - break; - } - } - // count any leftover from chars - while (*from++ != '\0') - from_length++; - - *faultHandler = oldFaultHandler; - return from_length; - -error: - *faultHandler = oldFaultHandler; - return B_BAD_ADDRESS; -} - - -status_t -arch_cpu_user_memset(void *s, char c, size_t count, addr_t *faultHandler) -{ - char *xs = (char *)s; - addr_t oldFaultHandler = *faultHandler; - -// TODO: This doesn't work correctly with gcc 4 anymore! - if (m68k_set_fault_handler(faultHandler, (addr_t)&&error)) - goto error; - - while (count--) - *xs++ = c; - - *faultHandler = oldFaultHandler; - return 0; - -error: - *faultHandler = oldFaultHandler; - return B_BAD_ADDRESS; -} - - status_t arch_cpu_shutdown(bool reboot) {