From 7f4da522479c0f00126219f0c23b804c3a93d7a6 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Sun, 16 Mar 2014 14:40:16 +0200 Subject: Add driver lib for projects which require it --- driverlib/epi_workaround_ccs.s | 233 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 driverlib/epi_workaround_ccs.s (limited to 'driverlib/epi_workaround_ccs.s') diff --git a/driverlib/epi_workaround_ccs.s b/driverlib/epi_workaround_ccs.s new file mode 100644 index 0000000..b951f71 --- /dev/null +++ b/driverlib/epi_workaround_ccs.s @@ -0,0 +1,233 @@ +;***************************************************************************** +; +; epi_workaround_ccs.s - EPI memory access functions. +; +; Copyright (c) 2013-2014 Texas Instruments Incorporated. All rights reserved. +; Software License Agreement +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; +; Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; +; Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the +; distribution. +; +; Neither the name of Texas Instruments Incorporated nor the names of +; its contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +; +; This is part of revision 2.1.0.12573 of the Tiva Peripheral Driver Library. +; +;***************************************************************************** + +;***************************************************************************** +; +; void EPIWorkaroundWordWrite(uint32_t *pui32Addr, uint32_t ui32Value) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundWordWrite" + .global EPIWorkaroundWordWrite +EPIWorkaroundWordWrite: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Store the word in EPI memory. + ; + str r1, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [sp] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + +;***************************************************************************** +; +; uint32_t EPIWorkaroundWordRead(uint32_t *pui32Addr) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundWordRead" + .global EPIWorkaroundWordRead +EPIWorkaroundWordRead: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Read the word from EPI memory. + ; + ldr r0, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [r13] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + + +;***************************************************************************** +; +; void EPIWorkaroundHWordWrite(uint16_t *pui16Addr, uint16_t ui16Value) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundHWordWrite" + .global EPIWorkaroundHWordWrite +EPIWorkaroundHWordWrite: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Store the word in EPI memory. + ; + strh r1, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [sp] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + +;***************************************************************************** +; +; uint16_t EPIWorkaroundHWordRead(uint16_t *pui16Addr) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundHWordRead" + .global EPIWorkaroundHWordRead +EPIWorkaroundHWordRead: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Read the half word from EPI memory. + ; + ldrh r0, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [r13] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + +;***************************************************************************** +; +; void EPIWorkaroundByteWrite(uint8_t *pui8Addr, uint8_t ui8Value) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundByteWrite" + .global EPIWorkaroundByteWrite +EPIWorkaroundByteWrite: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Store the byte in EPI memory. + ; + strb r1, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [sp] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + +;***************************************************************************** +; +; uint8_t EPIWorkaroundByteRead(uint8_t *pui8Addr) +; +;***************************************************************************** + .sect ".text:EPIWorkaroundByteRead" + .global EPIWorkaroundByteRead +EPIWorkaroundByteRead: + ; + ; Include a no-op to ensure that we don't have a flash data access + ; immediately before the EPI access. + ; + nop + + ; + ; Read the byte from EPI memory. + ; + ldrb r0, [r0] + + ; + ; Make a dummy read from the stack to ensure that we don't have a flash + ; data access immediately after the EPI access. + ; + ldr r1, [r13] + + ; + ; Return to the caller. + ; + bx lr + + .align 4 + +.end -- cgit v1.3.1