Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / obp / obp / arch / sun / dynamic-user.fth
\ ========== Copyright Header Begin ==========================================
\
\ Hypervisor Software File: dynamic-user.fth
\
\ Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
\
\ - Do no alter or remove copyright notices
\
\ - Redistribution and use of this software in source and binary forms, with
\ or without modification, are permitted provided that the following
\ conditions are met:
\
\ - Redistribution of source code must retain the above copyright notice,
\ this list of conditions and the following disclaimer.
\
\ - Redistribution in binary form must reproduce the above copyright notice,
\ this list of conditions and the following disclaimer in the
\ documentation and/or other materials provided with the distribution.
\
\ Neither the name of Sun Microsystems, Inc. or the names of contributors
\ may be used to endorse or promote products derived from this software
\ without specific prior written permission.
\
\ This software is provided "AS IS," without a warranty of any kind.
\ ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
\ INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
\ PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
\ MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
\ ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
\ DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
\ OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
\ FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
\ DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
\ ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
\ SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
\
\ You acknowledge that this software is not designed, licensed or
\ intended for use in the design, construction, operation or maintenance of
\ any nuclear facility.
\
\ ========== Copyright Header End ============================================
id: @(#)dynamic-user.fth 1.2 03/12/08 13:21:46
purpose:
copyright: Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved
copyright: Use is subject to license terms.
\ The use of this code will give all machines almost 512Kb of user space
\ without sacrificing RAM unless it is required.
\
\
h# 400 constant /user-margin
: ?user-space-exhausted ( abort? -- )
abort" ERROR: User area used up!"
;
: detect-recursive-enter ( #bytes -- #bytes )
dup #user @ + user-size /user-margin + > ?user-space-exhausted
;
: enlarge-user-space ( #bytes -- #bytes ) recursive
#user @ 2dup + ( #bytes #user new-#user )
dup user-size <= if ( #bytes #user new-#user )
2drop exit
then ( #bytes #user new-#user )
['] detect-recursive-enter is check-user-size
\ OK we want more user space, so we need to
\ claim a new page and map it if possible.
RAMsize HEAPsize - > ?user-space-exhausted ( #bytes #user )
over mmu-pagesize round-up ( #bytes #user #to-claim )
swap up0 @ + mmu-pagesize round-up ( #bytes #to-claim va )
over dup mmu-pagesize mem-claim
( #bytes #to-claim va #to-claim pa.lo pa.hi )
2swap map-pages ( #bytes #to-claim )
user-size + is user-size ( #bytes )
['] enlarge-user-space is check-user-size
;
stand-init: Grow user space to fill RAMsize-start
RAMbase RAMsize-start + up0 @ - /user-margin - is user-size
['] enlarge-user-space is check-user-size
;