diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2012-11-13 15:36:05 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-11-14 15:45:36 -0600 |
commit | 073d82a61ee7ce0ec4522c18ce92cd93537025db (patch) | |
tree | 382b3db4c6032fb83b2e1c7e9f50eb6c0507fb5b /src/kernel/syscall.C | |
parent | f5fc4c94d84ed3a5263d4139cb09179a5722f382 (diff) | |
download | talos-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.C | 29 |
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) { |