https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;
 | |
| ;  Copyright (c) 2014-2018, Linaro Limited. All rights reserved.
 | |
| ;
 | |
| ;  SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| ;
 | |
| 
 | |
| 
 | |
| AREA IoLibMmio, CODE, READONLY
 | |
| 
 | |
| EXPORT MmioRead8Internal
 | |
| EXPORT MmioWrite8Internal
 | |
| EXPORT MmioRead16Internal
 | |
| EXPORT MmioWrite16Internal
 | |
| EXPORT MmioRead32Internal
 | |
| EXPORT MmioWrite32Internal
 | |
| EXPORT MmioRead64Internal
 | |
| EXPORT MmioWrite64Internal
 | |
| 
 | |
| ;
 | |
| ;  Reads an 8-bit MMIO register.
 | |
| ;
 | |
| ;  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
 | |
| ;  returned. This function must guarantee that all MMIO read and write
 | |
| ;  operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to read.
 | |
| ;
 | |
| ;  @return The value read.
 | |
| ;
 | |
| MmioRead8Internal
 | |
|   ldrb    w0, [x0]
 | |
|   dmb     ld
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Writes an 8-bit MMIO register.
 | |
| ;
 | |
| ;  Writes the 8-bit MMIO register specified by Address with the value specified
 | |
| ;  by Value and returns Value. This function must guarantee that all MMIO read
 | |
| ;  and write operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to write.
 | |
| ;  @param  Value   The value to write to the MMIO register.
 | |
| ;
 | |
| MmioWrite8Internal
 | |
|   dmb     st
 | |
|   strb    w1, [x0]
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Reads a 16-bit MMIO register.
 | |
| ;
 | |
| ;  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
 | |
| ;  returned. This function must guarantee that all MMIO read and write
 | |
| ;  operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to read.
 | |
| ;
 | |
| ;  @return The value read.
 | |
| ;
 | |
| MmioRead16Internal
 | |
|   ldrh    w0, [x0]
 | |
|   dmb     ld
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Writes a 16-bit MMIO register.
 | |
| ;
 | |
| ;  Writes the 16-bit MMIO register specified by Address with the value specified
 | |
| ;  by Value and returns Value. This function must guarantee that all MMIO read
 | |
| ;  and write operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to write.
 | |
| ;  @param  Value   The value to write to the MMIO register.
 | |
| ;
 | |
| MmioWrite16Internal
 | |
|   dmb     st
 | |
|   strh    w1, [x0]
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Reads a 32-bit MMIO register.
 | |
| ;
 | |
| ;  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
 | |
| ;  returned. This function must guarantee that all MMIO read and write
 | |
| ;  operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to read.
 | |
| ;
 | |
| ;  @return The value read.
 | |
| ;
 | |
| MmioRead32Internal
 | |
|   ldr     w0, [x0]
 | |
|   dmb     ld
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Writes a 32-bit MMIO register.
 | |
| ;
 | |
| ;  Writes the 32-bit MMIO register specified by Address with the value specified
 | |
| ;  by Value and returns Value. This function must guarantee that all MMIO read
 | |
| ;  and write operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to write.
 | |
| ;  @param  Value   The value to write to the MMIO register.
 | |
| ;
 | |
| MmioWrite32Internal
 | |
|   dmb     st
 | |
|   str     w1, [x0]
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Reads a 64-bit MMIO register.
 | |
| ;
 | |
| ;  Reads the 64-bit MMIO register specified by Address. The 64-bit read value is
 | |
| ;  returned. This function must guarantee that all MMIO read and write
 | |
| ;  operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to read.
 | |
| ;
 | |
| ;  @return The value read.
 | |
| ;
 | |
| MmioRead64Internal
 | |
|   ldr    x0, [x0]
 | |
|   dmb    ld
 | |
|   ret
 | |
| 
 | |
| ;
 | |
| ;  Writes a 64-bit MMIO register.
 | |
| ;
 | |
| ;  Writes the 64-bit MMIO register specified by Address with the value specified
 | |
| ;  by Value and returns Value. This function must guarantee that all MMIO read
 | |
| ;  and write operations are serialized.
 | |
| ;
 | |
| ;  @param  Address The MMIO register to write.
 | |
| ;  @param  Value   The value to write to the MMIO register.
 | |
| ;
 | |
| MmioWrite64Internal
 | |
|   dmb     st
 | |
|   str     x1, [x0]
 | |
|   ret
 | |
| 
 | |
|   END
 |