Skip to content

Commit 9b189f0

Browse files
Describe "Overwriting a TE" operation
Overwrite operation is used to replace content of a given TE Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
1 parent edad166 commit 9b189f0

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

source/transfer_list.rst

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,33 @@ Inputs:
411411

412412
#. `void_te.size` = `te.data_size + te.hdr_size - 0x8`
413413

414+
Overwriting a TE
415+
^^^^^^^^^^^^^^^^
416+
417+
Inputs:
418+
419+
- `tl_base_addr`: Base address of the TL from which TE to be overwritten
420+
- `te_base_addr`: Base address of the TE to be overwritten
421+
- `new_data_size`: Size in bytes of the data to be encapsulated in the TE
422+
- [data]: Data to be copied into the TE
423+
424+
#. If `te.data_size` is smaller than `new_data_size`, abort this operation here and instead first
425+
follow `Adding a void TE`_ with `te_base_addr` and `te.data_size`, then follow `Adding a new TE`_
426+
with `tl_base_addr`, `tag_id`, `new_data_size` and `[data]`
427+
428+
#. If `has_checksum`, xor the `te.data_size` bytes starting at `te_base_addr + te.hdr_size` with `tl.checksum`
429+
430+
#. Copy `new_data_size` byte of data starting at `te_base_addr + te.hdr_size`
431+
432+
#. If `has_checksum`, xor the `new_data_size` bytes starting at `te_base_addr + te.hdr_size` with `tl.checksum`
433+
434+
#. If `te.data_size - new_data_size` is greater or equal to `0x8` then call
435+
`Adding a void TE`_ with following arguments:
436+
437+
#. `void.te.base_addr` = `te_base_addr + te.hdr_size + align8(new_data_size)`
438+
439+
#. `void.te.size` = `te.data_size - align8(new_data_size) - 0x8`
440+
414441
Adding a new TE with special data alignment requirement
415442
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
416443

0 commit comments

Comments
 (0)