On Fri, Jun 04, 2010 at 12:14:14PM -0700, Richard Henderson wrote:
> This allows the use of direct calls to the helpers,
> and a direct branch back to the epilogue.
> 
> Signed-off-by: Richard Henderson <r...@twiddle.net>
> ---
>  exec.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index bb3dcad..7bbfe60 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -519,6 +519,13 @@ static void code_gen_alloc(unsigned long tb_size)
>          start = (void *) 0x01000000UL;
>          if (code_gen_buffer_size > 16 * 1024 * 1024)
>              code_gen_buffer_size = 16 * 1024 * 1024;
> +#elif defined(__s390x__)
> +        /* Map the buffer so that we can use direct calls and branches.  */
> +        /* We have a +- 4GB range on the branches; leave some slop.  */
> +        if (code_gen_buffer_size > (3ul * 1024 * 1024 * 1024)) {
> +            code_gen_buffer_size = 3ul * 1024 * 1024 * 1024;
> +        }
> +        start = (void *)0x90000000UL;

Is there any reason for this address?

>  #endif
>          code_gen_buffer = mmap(start, code_gen_buffer_size,
>                                 PROT_WRITE | PROT_READ | PROT_EXEC,
> -- 
> 1.7.0.1
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurel...@aurel32.net                 http://www.aurel32.net

Reply via email to