GIET-VM / Physical addressing functions
-
GIET-VM / Physical addressing functions
-
- 1) unsigned int _physical_read( unsigned long long paddr )
- 2) void _physical_write( unsigned long long paddr, unsigned int …
- 3) unsigned long long _physical_read_ull( unsigned long long paddr )
- 4) void _physical_write_ull( unsigned long long paddr, unsigned …
- 5) void _physical_memcpy( unsigned long long dst_paddr, unsigned …
- 6) unsigned int _io_extended_read( unsigned int* vaddr )
- 7) void _io_extended_write( unsigned int* vaddr, unsigned int value )
- 8) unsigned int _l2_l3_sync_read( unsigned int* vaddr )
- 9) void _l2_l3_sync_write( unsigned int* vaddr, unsigned int value )
-
The utils.c and util.h files define the functions related to physical addressing, using the CP2_PADDR_EXT register, or functions used for software L2/L3 cache coherence. Physical addresses can have up to 64 bits.
They are prefixed by "_" to remind that they can only be executed by a processor in kernel mode.
1) unsigned int _physical_read( unsigned long long paddr )
Returns the 32 bits word stored at physical address paddr, after a temporary DTLB deactivation. It uses the CP2_PADDR_EXT register.
2) void _physical_write( unsigned long long paddr, unsigned int value )
Writes the 32 bits word value at physical address paddr, after a temporary DTLB deactivation. It uses the CP2_PADDR_EXT register.
3) unsigned long long _physical_read_ull( unsigned long long paddr )
Returns the 64 bits word stored at physical address paddr, after a temporary DTLB deactivation. It uses the CP2_PADDR_EXT register.
4) void _physical_write_ull( unsigned long long paddr, unsigned long long value )
Writes the 64 bits word value at physical address paddr, after a temporary DTLB deactivation. It uses the CP2_PADDR_EXT register.
5) void _physical_memcpy( unsigned long long dst_paddr, unsigned long long src paddr, unsigned int size )
This function makes a memcpy from a source buffer to a destination buffer, using physical addresses, after a temporary DTLB de-activation. The src_paddr, dst_paddr and size arguments must be multiple of 4 bytes.
6) unsigned int _io_extended_read( unsigned int* vaddr )
This function is used by the GIET-VM drivers to read a 32 bits word in a peripheral register. If the MMU is not activated, the virtual address is extended using X_IO and Y_IO (defined in the hard-config.h file) to reach the cluster_io.
7) void _io_extended_write( unsigned int* vaddr, unsigned int value )
This function is used by the GIET-VM drivers to write a 32 bits word in a peripheral register. If the MMU is not activated, the virtual address is extended using X_IO and Y_IO (defined in the hard-config.h file) to reach the cluster_io.
8) unsigned int _l2_l3_sync_read( unsigned int* vaddr )
This function is used by the GIET_VM drivers to write a 32 bits word in L2 cache, with the garanty that the L3 cache will be updated.
9) void _l2_l3_sync_write( unsigned int* vaddr, unsigned int value )
This function is used by the GIET_VM drivers to read a 32 bits word from L2 cache, with the garanty that the involved cache line has been perviously invalidated.