diff options
author | Andres Lugo-Reyes <aalugore@us.ibm.com> | 2017-01-10 08:52:34 -0600 |
---|---|---|
committer | William A. Bryan <wilbryan@us.ibm.com> | 2017-02-01 16:45:08 -0500 |
commit | 0ee0cf11ed50cf9c43d05a1ba2aa4f25801b6d97 (patch) | |
tree | 64c8e2f6f33033495335fa952f51edb0f3ba07ae /src/occ_405/linkocc.cmd | |
parent | 4d6a99902a2a377a12dbef720fea81873fb920cc (diff) | |
download | talos-occ-0ee0cf11ed50cf9c43d05a1ba2aa4f25801b6d97.tar.gz talos-occ-0ee0cf11ed50cf9c43d05a1ba2aa4f25801b6d97.zip |
WOF: Function to calculate the desired VFRT Mainstore address
Function also copies VFRT from Mainstore to SRAM and then
sends the WOF VFRT IPC command to the PGPE
Change-Id: I94c7d4bcc9179fce3f17c1b974a12186c67547c1
RTC: 130216
Depends-on: I2249777134608d9f79bdc85692a3acbf7907c3f5
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/34658
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/linkocc.cmd')
-rwxr-xr-x | src/occ_405/linkocc.cmd | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/occ_405/linkocc.cmd b/src/occ_405/linkocc.cmd index 1dbf362..3c4556c 100755 --- a/src/occ_405/linkocc.cmd +++ b/src/occ_405/linkocc.cmd @@ -533,14 +533,42 @@ SECTIONS #if EXECUTABLE_FREE_SPACE _DATA_SECTION_SIZE = . - _DATA_SECTION_BASE; __WRITEABLE_DATA_LEN__ = . - __WRITEABLE_DATA_ADDR__ ; - _EX_FREE_SECTION_SIZE = _GLOBAL_DATA_BASE - _EX_FREE_SECTION_BASE; + _EX_FREE_SECTION_SIZE = _PING_PONG_BUFFER_BASE - _EX_FREE_SECTION_BASE; #else - _DATA_SECTION_SIZE = _GLOBAL_DATA_BASE - _DATA_SECTION_BASE; - __WRITEABLE_DATA_LEN__ = _GLOBAL_DATA_BASE - __WRITEABLE_DATA_ADDR__ ; + _DATA_SECTION_SIZE = _PING_PONG_BUFFER_BASE - _DATA_SECTION_BASE; + __WRITEABLE_DATA_LEN__ = _PING_PONG_BUFFER_BASE - __WRITEABLE_DATA_ADDR__ ; _EX_FREE_SECTION_SIZE = 0; #endif - _SSX_FREE_END = _GLOBAL_DATA_BASE - 1; + _SSX_FREE_END = _PING_PONG_BUFFER_BASE - 1; + + + //////////////////////////////// + // Ping/Pong Buffer Section + // + // Contains two 256-byte buffers used to tell the PGPE which vfrt to use + // + //////////////////////////////// + __CUR_COUNTER__ = .; + _PING_PONG_BUFFER_BASE = 0xfffb3d00; + _PING_BUFFER_BASE = 0xfffb3d00; + _PING_BUFFER_SIZE = 0x100; + _PONG_BUFFER_BASE = 0xfffb3e00; + _PONG_BUFFER_SIZE = 0x100; + . = _PING_BUFFER_BASE; +#if !PPC405_MMU_SUPPORT + . = . - writethrough_offset; + _LMA = . + writethrough_offset; + .vfrt_ping_buffer . : AT(_LMA) {*(vfrt_ping_buffer) . = ALIGN(_PING_BUFFER_SIZE);} + _LMA = . + writethrough_offset; + .vfrt_pong_buffer . : AT(_LMA) {*(vfrt_pong_buffer) . = ALIGN(_PONG_BUFFER_SIZE);} + . = . + writethrough_offset; +#else + .vfrt_ping_buffer . : {*(vfrt_ping_buffer) . = ALIGN(_PING_BUFFER_SIZE);} > sram + .vfrt_pong_buffer . : {*(vfrt_pong_buffer) . = ALIGN(_PONG_BUFFER_SIZE);} > sram +#endif + . = __CUR_COUNTER__; + //////////////////////////////// |