blob: c77b60c1c1bb8cd519feea84725f99e064c893a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef SBE_XIP_UTILS_H
#define SBE_XIP_UTILS_H
#include "p9_xip_image.h"
#include "ppe42_scom.h" // for PPE_STVD
#include "sbe_link.H" // for SBE_BASE_ORIGIN, SBE_SEEPROM_BASE_ORIGIN
// Unconditional jump to a memory location
#define JUMP_TO_ADDR(VAL ) \
{ \
asm volatile ( \
"mtlr %0 \n\t" \
: \
: "r" (VAL)); \
asm volatile ( \
"blr \n\t" \
: \
);\
}
// PIBMEM start address
const uint32_t g_pibMemAddr = SBE_BASE_ORIGIN;
// SEEPROM start address
const uint32_t g_headerAddr = SBE_SEEPROM_BASE_ORIGIN;
// IVPR register address
const uint32_t g_ivprLoc = 0xC0000160;
// Get XIP image header
inline P9XipHeader * getXipHdr()
{
P9XipHeader *hdr = (P9XipHeader *)( g_headerAddr );
return hdr;
}
// Get Section start addess
inline uint8_t * getSectionAddr( P9XipSection * i_section )
{
return ( (uint8_t *)( g_headerAddr + i_section->iv_offset));
}
#endif // SBE_XIP_UTILS_H
|