From 6155c62ab8eae064a0160bf8c042953637113d66 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Fri, 17 Jan 2014 15:29:40 -0600 Subject: 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 Reviewed-by: Daniel M. Crowell Reviewed-by: A. Patrick Williams III --- src/runtime/rt_main.C | 13 ++++++++++--- src/runtime/rt_start.S | 10 +++++++++- src/runtime/rt_vfs.C | 8 ++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) (limited to 'src/runtime') 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(i)); + if (NULL != intf->set_page_execute) + { + (intf->set_page_execute)(reinterpret_cast(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 + .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(i)); + if (g_hostInterfaces->set_page_execute) + { + g_hostInterfaces->set_page_execute( + reinterpret_cast(i)); + } } } -- cgit v1.2.1