\begin{tabular}{| c | c | l | c | c | p{5cm} |}\hline
Offset & Size (in bytes) & Name & Access & Value & Description \\\hline
0x00 & 0x08 & MAGIC & RO & 0x5344574248454144LL & Magic number used to ensure that there is a valid header present. \\\hline
0x08 & 0x08 & ID\_BLOCK\_ADDR & RO & - & Address of the ID block. See section \ref{id_block} for more information. \\\hline
0x10 & 0x08 & TLCP\_BLOCK\_ADDR & RO & - & Address of the top-level child pointer block. See section \ref{child_pointer_block} for more information. \\\hline
\end{tabular}
\end{table}
\end{savenotes}
\end{center}
\begin{description}
\item[MAGIC (Offset: 0x00)]\hfill\\
\item[MAGIC]\hfill\\
This field contains a unique value that allows software to ensure that
the header contains valid data. If the magic number does not match the
expected value, the software should abort immediately.
expected value, the software should abort.
The magic number in the current version of the specification is expected to
be 0x5344574248454144 or the ASCII string "SDWBHEAD" without the string
terminator.
\item[WBIDB\_ADDR (Offset: 0x08)]\hfill\\
This field contains the address of the Wishbone ID block (see Section \ref{id_block}
for more information). The software reading this field should know what address width
to expect.
\item[WBDDB\_ADDR (Offset: 0x10)]\hfill\\
This field contains the address of the device descriptor block (see Section
\ref{device_block} for more information). The software reading this field should
know what address width to expect.
be 0x5344574248454144 or the ASCII string "SDWBHEAD" (big-endian) without the
string terminator.
\item[ID\_BLOCK\_ADDR]\hfill\\
This field contains the address of the ID block in the memory space (see Section
\ref{id_block} for more information).
\item[TLCP\_BLOCK\_ADDR]\hfill\\
This field contains the address of the top level child pointer block (see Section
\ref{tlcp_block} for more information).
\end{description}
\subsubsection{LCSD32 Header Block}
The LCSD32 header block is the one used in a 32 bit address space. The structure
of the LCSD32 header block is described in Table \ref{hdr_block_struct}.
\begin{tabular}{| c | c | l | c | c | p{5cm} |}\hline
Offset & Size (in bytes) & Name & Access & Value & Description \\\hline
0x00 & 0x08 & MAGIC & RO & 0x5344574248454144LL & Magic number used to ensure that there is a valid header present. \\\hline
0x08 & 0x04 & ID\_BLOCK\_ADDR & RO & - & Address of the ID block. See section \ref{id_block} for more information. \\\hline
0x0c & 0x04 & TLCP\_BLOCK\_ADDR & RO & - & Address of the top-level child pointer block. See section \ref{child_pointer_block} for more information. \\\hline
\end{tabular}
\end{table}
\end{savenotes}
\end{center}
\begin{description}
\item[MAGIC]\hfill\\
This field contains a unique value that allows software to ensure that
the header contains valid data. If the magic number does not match the
expected value, the software should abort.
The magic number in the current version of the specification is expected to
be 0x5344574248454144 or the ASCII string "SDWBHEAD" (big-endian) without the
string terminator.
\item[ID\_BLOCK\_ADDR]\hfill\\
This field contains the address of the ID block in the memory space (see Section
\ref{id_block} for more information).
\item[TLCP\_BLOCK\_ADDR]\hfill\\
This field contains the address of the top level child pointer block (see Section
\ref{tlcp_block} for more information).
\end{description}
\subsubsection{LCSD16 Header Block}
The LCSD16 header block is the one used in a 16 bit address space. The structure
of the LCSD16 header block is described in Table \ref{hdr_block_struct}.
\begin{tabular}{| c | c | l | c | c | p{5cm} |}\hline
Offset & Size (in bytes) & Name & Access & Value & Description \\\hline
0x00 & 0x08 & MAGIC & RO & 0x5344574248454144LL & Magic number used to ensure that there is a valid header present. \\\hline
0x08 & 0x02 & ID\_BLOCK\_ADDR & RO & - & Address of the ID block. See section \ref{id_block} for more information. \\\hline
0x0c & 0x02 & TLCP\_BLOCK\_ADDR & RO & - & Address of the top-level child pointer block. See section \ref{child_pointer_block} for more information. \\\hline