diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2014-01-17 15:29:40 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-06 17:39:51 -0600 |
commit | 6155c62ab8eae064a0160bf8c042953637113d66 (patch) | |
tree | 51e52b7b20e92ed317fc939b9ebae596f7e80c58 /src/runtime | |
parent | 468b248f8998376a38c7cbfe14a8568f3245bea6 (diff) | |
download | talos-hostboot-6155c62ab8eae064a0160bf8c042953637113d66.tar.gz talos-hostboot-6155c62ab8eae064a0160bf8c042953637113d66.zip |
HBRT: Add version to interface struct.
Change-Id: Ifd02f285b97f6177e3ff8ed8d62f47fada28ab8b
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8144
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/runtime')
-rw-r--r-- | src/runtime/rt_main.C | 13 | ||||
-rw-r--r-- | src/runtime/rt_start.S | 10 | ||||
-rw-r--r-- | src/runtime/rt_vfs.C | 8 |
3 files changed, 25 insertions, 6 deletions
diff --git a/src/runtime/rt_main.C b/src/runtime/rt_main.C index 910a0d1d8..038a58e9f 100644 --- a/src/runtime/rt_main.C +++ b/src/runtime/rt_main.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -78,7 +78,10 @@ runtimeInterfaces_t* _main(hostInterfaces_t* intf, uint64_t base) i < ALIGN_PAGE_DOWN((uint64_t)&data_load_address); i += PAGESIZE) { - (intf->set_page_execute)(reinterpret_cast<void*>(i)); + if (NULL != intf->set_page_execute) + { + (intf->set_page_execute)(reinterpret_cast<void*>(i)); + } } // Tail-recurse to real entry point. @@ -95,11 +98,15 @@ runtimeInterfaces_t* rt_start(hostInterfaces_t* intf) // Call C++ constructors. rt_cppBootstrap(); + // Initialize runtime interfaces. + runtimeInterfaces_t* rtInterfaces = getRuntimeInterfaces(); + rtInterfaces->interfaceVersion = HOSTBOOT_RUNTIME_INTERFACE_VERSION; + // Initialize all modules. vfs_module_init(); // Return our interface pointer structure. - return getRuntimeInterfaces(); + return rtInterfaces; } void rt_cppBootstrap() diff --git a/src/runtime/rt_start.S b/src/runtime/rt_start.S index cea710b57..a8356fc27 100644 --- a/src/runtime/rt_start.S +++ b/src/runtime/rt_start.S @@ -5,7 +5,7 @@ # # IBM CONFIDENTIAL # -# COPYRIGHT International Business Machines Corp. 2013 +# COPYRIGHT International Business Machines Corp. 2013,2014 # # p1 # @@ -22,8 +22,16 @@ # IBM_PROLOG_END_TAG .include "kernel/ppcconsts.S" +#define __HOSTBOOT_RUNTIME_INTERFACE_VERSION_ONLY 1 +#include <runtime/interface.h> + .section .text.intvects +.org 0x0; +hbrt_desired_interface_version: + .quad 0x4842525456455253 # 'HBRTVERS' eyecatch. + .quad HOSTBOOT_RUNTIME_INTERFACE_VERSION + .org 0x100; _init: mflr r10 # Save LR diff --git a/src/runtime/rt_vfs.C b/src/runtime/rt_vfs.C index 73f381313..5477c8ac6 100644 --- a/src/runtime/rt_vfs.C +++ b/src/runtime/rt_vfs.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -44,7 +44,11 @@ void vfs_module_init() i < (uint64_t)module->data; i += PAGESIZE) { - g_hostInterfaces->set_page_execute(reinterpret_cast<void*>(i)); + if (g_hostInterfaces->set_page_execute) + { + g_hostInterfaces->set_page_execute( + reinterpret_cast<void*>(i)); + } } } |