beautypg.com

3 absolute values, 4 buffer addresses, 5 byte counts – Avago Technologies LSI53C1010 User Manual

Page 175: Absolute values, Buffer addresses, Byte counts

background image

Patching

7-9

7.2.2.2 Procedure 2

1.

Create a buffer to hold all the individual relative buffers.

UCHAR rel_buffer[8]

2.

Patch all buffers in one loop if the main Patch array is accessed and
the Header record is used. The

-o

assembler option must be used

for this procedure to work.

for(i=0; i

SCRIPT[Rel_Patches[i]] += VirttoPhys(rel_buffer);

}

See

Chapter 5, “The NASM Output File,”

for more information on the

structures created for patching relative buffers.

7.2.3 ABSOLUTE Values

ABSOLUTE values are patched exactly like EXTERN buffers. The

-o

compiler option must be used to patch Absolutes. See

Section 5.2.6,

“Absolute,”

for more information on ABSOLUTE values.

7.2.4 Buffer Addresses

Buffer addresses are usually patched into Block Move, Memory to
Memory, or Load/Store instructions. They are usually defined as
EXTERNS, RELATIVES, or ABSOLUTES. The general format of this
type of patch is:

SCRIPT[X_buffername_Used[n]] = VirttoPhys(c_buffer);

Where

X

is either E (Extern), R (Relative), or A (Absolute) depending on

the type of buffer used.

n

is the nth occurrence of this buffer in the SCRIPTS program.

c_buffer

is a buffer/array defined in ‘C’.

See

Chapter 5, “The NASM Output File,”

for more information on the

_Used

array.

7.2.5 Byte Counts

Byte counts are usually patched into Block Move, Memory to Memory, or
Load/Store instructions. Since the byte count is usually encoded in the

This manual is related to the following products: