/***************************************************************************** | |
* MODIFICATION HISTORY: | |
* | |
* Ver Who Date Changes | |
* ----- ---- -------- --------------------------------------------------- | |
* 3.02a sdm 05/30/11 Added Xuint64 typedef and XUINT64_MSW/XUINT64_LSW macros | |
* 3.02a sdm 06/27/11 Added INST_SYNC and DATA_SYNC macros for all the CPUs | |
* 3.02a sdm 07/07/11 Updated ppc440 boot.S to set guarded bit for all but | |
* cacheable regions | |
* Update ppc440/xil_cache.c to use CACHEABLE_REGION_MASK | |
* generated by the cpu driver, for enabling caches | |
* 3.02a sdm 07/08/11 Updated microblaze cache flush APIs based on write-back/ | |
* write-thru caches | |
* 3.03a sdm 08/20/11 Updated the tag/data RAM latency values for L2CC | |
* Updated the MMU table to mark OCM in high address space | |
* as inner cacheable and reserved space as Invalid | |
* 3.03a sdm 08/20/11 Changes to support FreeRTOS | |
* Updated the MMU table to mark upper half of the DDR as | |
* non-cacheable | |
* Setup supervisor and abort mode stacks | |
* Do not initialize/enable L2CC in case of AMP | |
* Initialize UART1 for 9600bps in case of AMP | |
* 3.03a sdm 08/27/11 Setup abort and supervisor mode stacks and don't init SMC | |
* in case of AMP | |
* 3.03a sdm 09/14/11 Added code for performance monitor and L2CC event | |
* counters | |
* 3.03a sdm 11/08/11 Updated microblaze xil_cache.h file to include | |
* xparameters.h file for CR630532 - Xil_DCacheFlush()/ | |
* Xil_DCacheFlushRange() functions in standalone BSP v3_02a | |
* for MicroBlaze will invalidate data in the cache instead | |
* of flushing it for writeback caches | |
* 3.04a sdm 11/21/11 Updated to initialize stdio device for 115200bps, for PS7 | |
* 3.04a sdm 01/02/12 Updated to clear cp15 regs with unknown reset values | |
* Remove redundant dsb/dmb instructions in cache maintenance | |
* APIs | |
* Remove redundant dsb in mcr instruction | |
* 3.04a sdm 01/13/12 Updated MMU table to mark DDR memory as Shareable | |
* 3.05a sdm 02/02/12 Removed some of the defines as they are being generated through | |
* driver tcl in xparameters.h. Update the gcc/translationtable.s | |
* for the QSPI complete address range - DT644567 | |
* Removed profile directory for armcc compiler and changed | |
* profiling setting to false in standalone_v2_1_0.tcl file | |
* Deleting boot.S file after preprocessing for armcc compiler | |
* 3.05a asa 03/11/12 Updated the function Xil_EnableMMU in file xil_mmu.c to | |
* invalidate the caches before enabling back the MMU and | |
* D cache. | |
* 3.05a asa 04/15/12 Updated the function Xil_SetTlbAttributes in file | |
* xil_mmu.c. Now we invalidate UTLB, Branch predictor | |
* array, flush the D-cache before changing the attributes | |
* in translation table. The user need not call Xil_DisableMMU | |
* before calling Xil_SetTlbAttributes. | |
* 3.06a asa/ 06/17/12 Removed the UART initialization for Zynq. For PEEP, the UART | |
* sgd initialization is present. Changes for this were done in | |
* uart.c and xil-crt0.s. | |
* Made changes in xil_io.c to use volatile pointers. | |
* Made changes in xil_mmu.c to correct the function | |
* Xil_SetTlbAttributes. | |
* Changes are made xil-crt0.s to initialize the static | |
* C++ constructors. | |
* Changes are made in boot.s, to fix the TTBR settings, | |
* correct the L2 Cache Auxiliary register settings, L2 cache | |
* latency settings. | |
* 3.07a asa/ 07/16/12 Made changes in cortexa9/xtime_l.c, xtime_l.h, sleep.c | |
* sgd usleep.c to use global timer intstead of CP15. | |
* Made changes in cortexa9/gcc/translation_table.s to map | |
* the peripheral devices as shareable device memory. | |
* Made changes in cortexa9/gcc/xil-crt0.s to initialize | |
* the global timer. | |
* Made changes in cortexa9/armcc/boot.S to initialize | |
* the global timer. | |
* Made changes in cortexa9/armcc/translation_table.s to | |
* map the peripheral devices as shareable device memory. | |
* Made changes in cortexa9/gcc/boot.S to optimize the | |
* L2 cache settings. Changes the section properties for | |
* ".mmu_tbl" and ".boot" sections in cortexa9/gcc/boot.S | |
* and cortexa9/gcc/translation_table.S. | |
* Made changes in cortexa9/xil_cache.c to change the | |
* cache invalidation order. | |
* 3.07a asa 08/17/12 Made changes across files for Cortexa9 to remove | |
* compilation/linking issues for C++ compiler. | |
* Made changes in mb_interface.h to remove compilation/ | |
* linking issues for C++ compiler. | |
* Added macros for swapb and swaph microblaze instructions | |
* mb_interface.h | |
* Remove barrier usage (SYNCHRONIZE_IO) from xil_io.c | |
* for CortexA9. | |
* 3.07a asa 08/30/12 Updated for CR 675636 to provide the L2 Base Address | |
* 3.07a asa 08/31/12 Added xil_printf.h include | |
* 3.07a sgd 09/18/12 Corrected the L2 cache enable settings | |
* Corrected L2 cache sequence disable sequence | |
* 3.07a sgd 10/19/12 SMC NOR and SRAM initialization with compiler option | |
* 3.09a asa 01/25/13 Updated to push and pop neon registers into stack for | |
* irq/fiq handling. | |
* Relocated COUNTS_PER_SECOND from sleep.c to xtime_l.h. This | |
* fixes the CR #692094. | |
* 3.09a sgd 02/14/13 Fix for CRs 697094 (SI#687034) and 675552. | |
* 3.10a srt 04/18/13 Implemented ARM Erratas. | |
* Cortex A9 Errata - 742230, 743622, 775420, 794073 | |
* L2Cache PL310 Errata - 588369, 727915, 759370 | |
* Please refer to file 'xil_errata.h' for errata | |
* description. | |
* 3.10a asa 05/04/13 Added support for L2 cache in MicroBlaze BSP. The older | |
* cache APIs were corresponding to only Layer 1 cache | |
* memories. New APIs were now added and the existing cache | |
* related APIs were changed to provide a uniform interface | |
* to flush/invalidate/enable/disable the complete cache | |
* system which includes both L1 and L2 caches. The changes | |
* for these were done in: | |
* src/microblaze/xil_cache.c and src/microblaze/xil_cache.h | |
* files. | |
* Four new files were added for supporting L2 cache. They are: | |
* microblaze_flush_cache_ext.S-> Flushes L2 cache | |
* microblaze_flush_cache_ext_range.S -> Flushes a range of | |
* memory in L2 cache. | |
* microblaze_invalidate_cache_ext.S-> Invalidates L2 cache | |
* microblaze_invalidate_cache_ext_range -> Invalidates a | |
* range of memory in L2 cache. | |
* These changes are done to implement PR #697214. | |
* 3.10a asa 05/13/13 Modified cache disable APIs at src/cortexa9/xil_cache.c to | |
* fix the CR #706464. L2 cache disabling happens independent | |
* of L1 data cache disable operation. Changes are done in the | |
* same file in cache handling APIs to do a L2 cache sync | |
* (poll reg7_?cache_?sync). This fixes CR #700542. | |
* 3.10a asa 05/20/13 Added API/Macros for enabling and disabling nested | |
* interrupts for ARM. These are done to fix the CR#699680. | |
* 3.10a srt 05/20/13 Made changes in cache maintenance APIs to do a proper cach | |
* sync operation. This fixes the CR# 716781. | |
* 3.11a asa 09/07/13 Updated armcc specific BSP files to have proper support | |
* for armcc toolchain. | |
* Modified asm_vectors.S (gcc) and asm_vectors.s (armcc) to | |
* fix issues related to NEON context saving. The assembly | |
* routines for IRQ and FIQ handling are modified. | |
* Deprecated the older BSP (3.10a). | |
* 3.11a asa 09/22/13 Fix for CR#732704. Cache APIs are modified to avoid | |
* various potential issues. Made changes in the function | |
* Xil_SetAttributes in file xil_mmu.c. | |
* 3.11a asa 09/23/13 Added files xil_misc_psreset_api.c and xil_misc_psreset_api.h | |
* in src\cortexa9 and src\microblaze folders. | |
* 3.11a asa 09/28/13 Modified the cache APIs (src\cortexa9) to fix handling of | |
* L2 cache sync operation and to fix issues around complete | |
* L2 cache flush/invalidation by ways. | |
* 3.12a asa 10/22/13 Modified the files xpseudo_asm_rvct.c and xpseudo_asm_rvct.h | |
* to fix linking issues with armcc/DS-5. Modified the armcc | |
* makefile to fix issues. | |
* 3.12a asa 11/15/13 Fix for CR#754800. It fixes issues around profiling for MB. | |
* 4.0 hk 12/13/13 Added check for STDOUT_BASEADDRESS where outbyte is used. | |
* 4.0 pkp 22/01/14 Modified return addresses for interrupt handlers (DataAbortHandler | |
* and SWIHandler) in asm_vector.S (src\cortexa9\gcc\ and | |
* src\cortexa9\armcc\) to fix CR#767251 | |
* 4.0 pkp 24/01/14 Modified cache APIs (Xil_DCacheInvalidateRange and | |
* Xil_L1DCacheInvalidate) in xil_cache.c (src\cortexa9) to fix the bugs. | |
* Few cache lines were missed to invalidate when unaligned address | |
* invalidation was accommodated in Xil_DCacheInvalidateRange. | |
* In Xil_L1DCacheInvalidate, while invalidating all L1D cache | |
* stack memory (which contains return address) was invalidated. So | |
* stack memory is flushed first and then L1D cache is invalidated. | |
* This is done to fix CR #763829 | |
* 4.0 adk 22/02/2014 Fixed the CR:775379 removed unnecessay _t(unit32_t etc) from | |
* mblaze_nt_types.h file and replace uint32_t with u32 in the | |
* profile_hist.c to fix the above CR. | |
* 4.1 bss 04/14/14 Updated driver tcl to remove _interrupt_handler.o from libgloss.a | |
* instead of libxil.a and added prototypes for | |
* microblaze_invalidate_cache_ext and microblaze_flush_cache_ext in | |
* mb_interface.h | |
* 4.1 hk 04/18/14 Add sleep function. | |
* 4.1 asa 04/21/14 Fix for CR#764881. Added support for msrset and msrclr. Renamed | |
* some of the *.s files inMB BSP source to *.S. | |
* 4.1 asa 04/28/14 Fix for CR#772280. Made changes in file cortexa9/gcc/read.c. | |
* 4.1 bss 04/29/14 Modified driver tcl to use libxil.a if libgloss.a does not exist | |
* CR#794205 | |
* 4.1 asa 05/09/14 Fix for CR#798230. Made changes in cortexa9/xil_cache.c and | |
* common/xil_testcache.c | |
* Fix for CR#764881. | |
* 4.1 srt 06/27/14 Remove '#undef DEBUG' from src/common/xdebug.h, which allows to | |
* output the DEBUG logs when -DDEBUG flag is enabled in BSP. | |
* 4.2 pkp 06/27/14 Added support for IAR compiler in src/cortexa9/iccarm. | |
* Also added explanatory notes in cortexa9/xil_cache.c for CR#785243. | |
* 4.2 pkp 06/19/14 Asynchronous abort has been enabled into cortexa9/gcc/boot.s and | |
* cortexa9/armcc/boot.s. Added default exception handlers for data | |
* abort and prefetch abort using handlers called | |
* DataAbortHandler and PrefetchAbortHandler respectively in | |
* cortexa9/xil_exception.c to fix CR#802862. | |
* 4.2 pkp 06/30/14 MakeFile for cortexa9/armcc has been changed to fixes the | |
* issue of improper linking of translation_table.s | |
* 4.2 pkp 07/04/14 added weak attribute for the function in BSP which are also present | |
* in tool chain to avoid conflicts into some special cases | |
* 4.2 pkp 07/21/14 Corrected reset value of event counter in function | |
* Xpm_ResetEventCounters in src/cortexa9/xpm_counter.c to fix CR#796275 | |
* 4.2 pkp 07/21/14 Included xil_types.h file in xil_mmu.h which had contained a function | |
* containing type def u32 defined in xil_types.g to resolve issue of | |
* CR#805869 | |
* 4.2 pkp 08/04/14 Removed unimplemented nanosleep routine from cortexa9/usleep.c as | |
* it is not possible to generate timer in nanosecond due to limited | |
* cpu frequency | |
* 4.2 pkp 08/04/14 Removed PEEP board related code which contained initialization of | |
* uart, smc nor and sram from cortexa9/gcc/xil-crt0.s and armcc/boot.s | |
* and iccarm/boot.s. Also uart.c and smc.c have been removed. Also | |
* removed function definition of XSmc_NorInit and XSmc_NorInit from | |
* cortexa9/smc.h | |
* 4.2 bss 08/11/14 Added microblaze_flush_cache_ext_range and microblaze_invalidate_ | |
* cache_ext_range declarations in mb_interface.h CR#783821. | |
* Modified profile_mcount_mb.S to fix CR#808412. | |
* 4.2 pkp 08/21/14 modified makefile of iccarm for proper linking of objectfiles in | |
* cortexa9/iccarm to fix CR#816701 | |
* 4.2 pkp 09/02/14 modified translation table entries in cortexa9/gcc/translation_table.s, | |
* armcc/translation_table.s and iccarm/translation_table.s | |
* to properly defined reserved entries according to address map for | |
* fixing CR#820146 | |
* 4.2 pkp 09/11/14 modified translation table entries in cortexa9/iccarm/translation_table.s | |
* and cortexa9/armcc/translation_table.s to resolve compilation | |
* error for solving CR#822897 | |
* 5.0 kvn 12/9/14 Support for Zync Ultrascale Mp.Also modified code for | |
* MISRA-C:2012 compliance. | |
* 5.0 pkp 12/15/14 Added APIs to get information about the platforms running the code by | |
* adding src/common/xplatform_info.*s | |
* 5.0 pkp 16/12/14 Modified boot code to enable scu after MMU is enabled and | |
* removed incorrect initialization of TLB lockdown register to fix | |
* CR#830580 in cortexa9/gcc/boot.S & cpu_init.S, armcc/boot.S | |
* and iccarm/boot.s | |
* 5.0 pkp 25/02/15 Modified floating point flag to vfpv3 from vfpv3_d16 in BSP MakeFile | |
* for iccarm and armcc compiler of cortexA9 | |
* 5.1 pkp 05/13/15 Changed the initialization order in cortexa9/gcc/boot.S, iccarm/boot.s | |
* and armcc/boot.s so to first invalidate caches and TLB, enable MMU and | |
* caches, then enable SMP bit in ACTLR. L2Cache invalidation and enabling | |
* of L2Cache is done later. | |
* 5.1 pkp 12/05/15 Modified cortexa9/xil_cache.c to modify Xil_DCacheInvalidateRange and | |
* Xil_DCacheFlushRange to remove unnecessary dsb which is unnecessarily | |
* taking long time to fix CR#853097. L2CacheSync is added into | |
* Xil_L2CacheInvalidateRange API. Xil_L1DCacheInvalidate and | |
* Xil_L2CacheInvalidate APIs are modified to flush the complete stack | |
* instead of just System Stack | |
* 5.1 pkp 14/05/15 Modified cortexa9/gcc/Makefile to keep a correct check of a compiler | |
* to update ECC_FLAGS and also take the compiler and archiver as specified | |
* in settings instead of hardcoding it. | |
* 5.2 pkp 06/08/15 Modified cortexa9/gcc/translation_table.S to put a check for | |
* XPAR_PS7_DDR_0_S_AXI_BASEADDR to confirm if DDR is present or not and | |
* accordingly generate the translation table | |
* 5.2 pkp 23/07/15 Modified cortexa9/gcc/Makefile to keep a correct check of a compiler | |
* to update ECC_FLAGS to fix a bug introduced during new version creation | |
* of BSP. | |
* 5.3 pkp 10/07/15 Modified cortexa9/xil_cache.c file to change cache API so that L2 Cache | |
* functionalities are avoided for the OpenAMP slave application(when | |
* USE_AMP flag is defined for BSP) as master CPU would be utilizing L2 | |
* cache for its operation. Also file operations such as read, write, | |
* close, open are also avoided for OpenAMP support(when USE_AMP flag is | |
* defined for BSP) because XilOpenAMP library contains own file operation. | |
* The xil-crt0.S file is modified for not initializing global timer for | |
* OpenAMP application as it might be already in use by master CPU | |
* 5.3 pkp 10/09/15 Modified cortexa9/iccarm/xpseudo_asm_iccarm.h file to change function | |
* definition for dsb, isb and dmb to fix the compilation error when used | |
* kvn 16/10/15 Encapsulated assembly code into macros for R5 xil_cache file. | |
* 5.4 pkp 09/11/15 Modified cortexr5/gcc/boot.S to disable ACTLR.DBWR bit to avoid potential | |
* R5 deadlock for errata 780125 | |
* 5.4 pkp 09/11/15 Modified cortexa53/32bit/gcc/boot.S to enable I-Cache and D-Cache for a53 | |
* 32 bit BSP in the initialization | |
* 5.4 pkp 09/11/15 Modified cortexa9/xil_misc_psreset_api.c file to change the description | |
* for XOcm_Remap function | |
* 5.4 pkp 16/11/15 Modified microblaze/xil_misc_psreset_api.c file to change the description | |
* for XOcm_Remap function | |
* kvn 21/11/15 Added volatile keyword for ADDR varibles in Xil_Out API | |
* kvn 21/11/15 Changed ADDR variable type from u32 to UINTPTR. This is | |
* required for MISRA-C:2012 Compliance. | |
* 5.4 pkp 23/11/15 Added attribute definitions for Xil_SetTlbAttributes API of Cortex-A9 | |
* in cortexa9/xil_mmu.h | |
* 5.4 pkp 23/11/15 Added default undefined exception handler for Cortex-A9 | |
* 5.4 pkp 11/12/15 Modified common/xplatform_info.h to add #defines for silicon for | |
* checking the current executing platform | |
* 5.4 pkp 18/12/15 Modified cortexa53/32bit/gcc/xil-crt0.S and 64bit/gcc/xil-crt0.S | |
* to initialize global constructor for C++ applications | |
* 5.4 pkp 18/12/15 Modified cortexr5/gcc/xil-crt0.S to initialize global constructor for | |
* C++ applications | |
* 5.4 pkp 18/12/15 Modified cortexa53/32bit/gcc/translation_table.S and 64bit/gcc/ | |
* translation_table.S to update the translation table according to proper | |
* address map | |
* 5.4 pkp 18/12/15 Modified cortexar5/mpu.c to initialize the MPU according to proper | |
* address map | |
* 5.4 pkp 05/01/16 Modified cortexa53/64bit/boot.S to set the reset vector register RVBAR | |
* equivalent to vector table base address | |
* 5.4 pkp 08/01/16 Modified cortexa9/gcc/Makefile to update the extra compiler flag | |
* as per the toolchain update | |
* 5.4 pkp 12/01/16 Changed common/xplatform_info.* to add platform information support | |
* for Cortex-A53 32bit mode | |
* 5.4 pkp 28/01/16 Modified cortexa53/32bit/sleep.c and usleep.c & cortexa53/64bit/sleep.c | |
* and usleep.c to correct routines to avoid hardcoding the timer frequency, | |
* instead take it from xparameters.h to properly configure the timestamp | |
* clock frequency | |
* 5.4 asa 29/01/16 Modified microblaze/mb_interface.h to add macros that support the | |
* new instructions for MB address extension feature | |
* 5.4 kvn 30/01/16 Modified xparameters_ps.h file to add interrupt ID number for | |
* system monitor. | |
* 5.4 pkp 04/02/16 Modified cortexr5/gcc/boot.S to enable fault log for lock-step mode | |
* 5.4 pkp 19/02/16 Modified cortexr5/xtime_l.c to add an API XTime_StartTimer and updated | |
* cortexr5/xil-crt0.S to configure the TTC3 timer when present. Modified | |
* cortexr5/sleep.c, cortexr5/usleep.c to use TTC3 when present otherwise | |
* use set of assembly instructions to provide required delay to fix | |
* CR#913249. | |
* 5.4 asa 25/02/16 Made changes in xil-crt0.S for R5, A53 64 and 32 bit BSPs, to replace | |
* _exit with exit. We should not be directly calling _exit and should | |
* always use the library exit. This fixes the CR#937036. | |
* 5.4 pkp 25/02/16 Made change to cortexr5/gcc/boot.S to initialize the floating point | |
* registers, banked registers for various modes and enabled | |
* the cache ECC check before enabling the fault log for lock step mode | |
* Also modified the cortexr5/gcc/Makefile to support floating point | |
* registers initialization in boot code. | |
* 5.4 pkp 03/01/16 Updated the exit function in cortexr5/gcc/_exit.c to enable the debug | |
* logic in case of lock-step mode when fault log is enabled to fix | |
* CR#938281 | |
* 5.4 pkp 03/02/16 Modified cortexa9/iccarm/xpseudo_asm_iccarm.h file to include | |
* header file instrinsics.h which contains assembly instructions | |
* definitions which can be used by C | |
* 5.4 asa 03/02/16 Added print.c in MB BSP. Made other cosmetic changes to have uniform | |
* proto for all print.c across the BSPs. This patch fixes CR#938738. | |
* 5.4 pkp 03/09/16 Modified cortexr5/sleep.c and usleep.c to avoid disabling the | |
* interrupts when sleep/usleep is being executed using assembly | |
* instructions to fix CR#913249. | |
* 5.4 pkp 03/11/16 Modified cortexr5/xtime_l.c to avoid enabling overflow interrupt, | |
* instead modified cortexr5/sleep.c and usleep.c to poll the counter | |
* value and compare it with previous value to detect the overflow | |
* to fix CR#940209. | |
* 5.4 pkp 03/24/16 Modified cortexr5/boot.S to reset the dbg_lpd_reset before enabling | |
* the fault log to avoid intervention for lock-step mode and cortexr5/ | |
* _exit.c to enable the dbg_lpd_reset once the fault log is disabled | |
* to fix CR#947335 | |
*****************************************************************************************/ |