summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2012-11-13 15:36:05 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-11-14 15:45:36 -0600
commit073d82a61ee7ce0ec4522c18ce92cd93537025db (patch)
tree382b3db4c6032fb83b2e1c7e9f50eb6c0507fb5b /src/kernel/syscall.C
parentf5fc4c94d84ed3a5263d4139cb09179a5722f382 (diff)
downloadtalos-hostboot-073d82a61ee7ce0ec4522c18ce92cd93537025db.tar.gz
talos-hostboot-073d82a61ee7ce0ec4522c18ce92cd93537025db.zip
Expand memory footprint to full 8MB cache.
If fake PNOR isn't being used, we can expand our memory space to the full 8MB cache. There will be follow up work with RTC: 49137 to support 4MB degraded caches for bring-up. Change-Id: I1248efa37965f39ebab62aae556349c34aa24b66 RTC: 47356 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2319 Tested-by: Jenkins Server Reviewed-by: Melissa J. Connell <missyc@us.ibm.com> Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index 6535e7c19..b2a72d420 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -804,18 +804,37 @@ namespace Systemcalls
}
/**
- * Allocates a block of virtual memory that extends the VMM
- * space upto 32MEG of Mainstore.
- * @param[in] t: The task used to extend Memory
+ * Extends the initial footprint of the image further into memory.
+ *
+ * Depending on the syscall parameter, we will either switch from 4MB
+ * to 8MB cache-contained mode or expand into 32MB of space using real
+ * system memory.
+
+ * @param[in] t: The task used to extend Memory
*/
void MmExtend(task_t* t)
{
- TASK_SETRTN(t, VmmManager::mmExtend());
+ uint64_t size = TASK_GETARG0(t);
+
+ switch (size)
+ {
+ case MM_EXTEND_FULL_CACHE:
+ TASK_SETRTN(t, KernelMisc::expand_full_cache());
+ break;
+
+ case MM_EXTEND_REAL_MEMORY:
+ TASK_SETRTN(t, VmmManager::mmExtend());
+ break;
+
+ default:
+ TASK_SETRTN(t, -EINVAL);
+ break;
+ }
}
/**
* Allocates a block of memory of the given size
- * to at a specified physical address
+ * to at a specified physical address
*/
void MmLinearMap(task_t* t)
{
OpenPOWER on IntegriCloud