ソースの整理中ですが、利用はできます。

Dependencies:   EthernetInterface HttpServer TextLCD mbed-rpc mbed-rtos mbed Socket lwip-eth lwip-sys lwip

Committer:
yueee_yt
Date:
Wed Mar 12 04:19:54 2014 +0000
Revision:
0:7766f6712673
???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:7766f6712673 1 /* Copyright (C) 2013 - Adam Green (https://github.com/adamgreen)
yueee_yt 0:7766f6712673 2
yueee_yt 0:7766f6712673 3 Licensed under the Apache License, Version 2.0 (the "License");
yueee_yt 0:7766f6712673 4 you may not use this file except in compliance with the License.
yueee_yt 0:7766f6712673 5 You may obtain a copy of the License at
yueee_yt 0:7766f6712673 6
yueee_yt 0:7766f6712673 7 http://www.apache.org/licenses/LICENSE-2.0
yueee_yt 0:7766f6712673 8
yueee_yt 0:7766f6712673 9 Unless required by applicable law or agreed to in writing, software
yueee_yt 0:7766f6712673 10 distributed under the License is distributed on an "AS IS" BASIS,
yueee_yt 0:7766f6712673 11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
yueee_yt 0:7766f6712673 12 See the License for the specific language governing permissions and
yueee_yt 0:7766f6712673 13 limitations under the License.
yueee_yt 0:7766f6712673 14 */
yueee_yt 0:7766f6712673 15 #if defined(TOOLCHAIN_GCC) && defined(__thumb2__)
yueee_yt 0:7766f6712673 16
yueee_yt 0:7766f6712673 17 #include <stdio.h>
yueee_yt 0:7766f6712673 18
yueee_yt 0:7766f6712673 19
yueee_yt 0:7766f6712673 20 /* This is a hand written Thumb-2 assembly language version of the
yueee_yt 0:7766f6712673 21 standard C memcpy() function that can be used by the lwIP networking
yueee_yt 0:7766f6712673 22 stack to improve its performance. It copies 4 bytes at a time and
yueee_yt 0:7766f6712673 23 unrolls the loop to perform 4 of these copies per loop iteration.
yueee_yt 0:7766f6712673 24 */
yueee_yt 0:7766f6712673 25 __attribute__((naked)) void thumb2_memcpy(void* pDest, const void* pSource, size_t length)
yueee_yt 0:7766f6712673 26 {
yueee_yt 0:7766f6712673 27 __asm (
yueee_yt 0:7766f6712673 28 ".syntax unified\n"
yueee_yt 0:7766f6712673 29 ".thumb\n"
yueee_yt 0:7766f6712673 30
yueee_yt 0:7766f6712673 31 // Copy 16 bytes at a time first.
yueee_yt 0:7766f6712673 32 " lsrs r3, r2, #4\n"
yueee_yt 0:7766f6712673 33 " beq.n 2$\n"
yueee_yt 0:7766f6712673 34 "1$: ldr r12, [r1], #4\n"
yueee_yt 0:7766f6712673 35 " str r12, [r0], #4\n"
yueee_yt 0:7766f6712673 36 " ldr r12, [r1], #4\n"
yueee_yt 0:7766f6712673 37 " str r12, [r0], #4\n"
yueee_yt 0:7766f6712673 38 " ldr r12, [r1], #4\n"
yueee_yt 0:7766f6712673 39 " str r12, [r0], #4\n"
yueee_yt 0:7766f6712673 40 " ldr r12, [r1], #4\n"
yueee_yt 0:7766f6712673 41 " str r12, [r0], #4\n"
yueee_yt 0:7766f6712673 42 " subs r3, #1\n"
yueee_yt 0:7766f6712673 43 " bne 1$\n"
yueee_yt 0:7766f6712673 44
yueee_yt 0:7766f6712673 45 // Copy byte by byte for what is left.
yueee_yt 0:7766f6712673 46 "2$:\n"
yueee_yt 0:7766f6712673 47 " ands r3, r2, #0xf\n"
yueee_yt 0:7766f6712673 48 " beq.n 4$\n"
yueee_yt 0:7766f6712673 49 "3$: ldrb r12, [r1], #1\n"
yueee_yt 0:7766f6712673 50 " strb r12, [r0], #1\n"
yueee_yt 0:7766f6712673 51 " subs r3, #1\n"
yueee_yt 0:7766f6712673 52 " bne 3$\n"
yueee_yt 0:7766f6712673 53
yueee_yt 0:7766f6712673 54 // Return to caller.
yueee_yt 0:7766f6712673 55 "4$: bx lr\n"
yueee_yt 0:7766f6712673 56 );
yueee_yt 0:7766f6712673 57 }
yueee_yt 0:7766f6712673 58
yueee_yt 0:7766f6712673 59 #endif