summaryrefslogtreecommitdiff
path: root/driverlib/epi_workaround_ccs.s
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2014-03-16 14:40:16 +0200
committerYuval Adam <yuv.adm@gmail.com>2014-03-16 14:40:16 +0200
commit7f4da522479c0f00126219f0c23b804c3a93d7a6 (patch)
tree59239ebbee0a424422d3a6653e55c4fd803dc0ad /driverlib/epi_workaround_ccs.s
parent413719367418ca7485f449d7bbae680ed75ee46d (diff)
Add driver lib for projects which require it
Diffstat (limited to 'driverlib/epi_workaround_ccs.s')
-rw-r--r--driverlib/epi_workaround_ccs.s233
1 files changed, 233 insertions, 0 deletions
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