Subject: Re: Several questions regarding the source
To: Michael Adda <michael_adda@hotmail.com>
From: Eduardo Horvath <eeh@turbolinux.com>
List: port-sparc64
Date: 07/04/2000 07:38:32
On Tue, 4 Jul 2000, Michael Adda wrote:

> Hi All,
> 
> I am reading the kernel source files of the sparc64 port, and I came
> across several points which made me send this mail.
> 
>     In the file sys/arch/sparc64/sparc64/asm.h the 32 bit compiler

Thank you for your interest.

The file sys/arch/sparc64/sparc64/asm.h is deprecated and to the best of
my knowledge unused.  The contents have all been moved to
sys/arch/sparc64/include/ctlreg.h.  I believe those issues have been fixed
in ctlreg.h.  If you do find any problems I would appreceate the
information.

>     In the file sys/lib/libkern/arch/sparc64/_setjmp.S ,
> in function _longjmp, the following code is found:
> 4:
>         cmp     %o2, %sp        ! %sp must not decrease
>         blt,pn  %icc, Llongjmpbotch
>          movge  %icc, %o2, %sp  ! it is OK, put it in place
>         jmp     %o3 + 8         ! success, return %g6
>          mov    %g6, %o0
> 
> This code is common to 64 bit stack as well as 32 bit stack,
> yet the branch (blt) depends on %icc. Assume that %o2 is
> 0x10000000, and %sp is 0x0ffffffff. This will cause us to avoid
> the jump, although we should have taken it.
> Am I missing some constraint on %sp forcing it to be a 32 bit
> address?

This is not currently an issue since the kernel address space is limited
betweeen 0x00000000f1800000 and 0x00000000f1e00000, with an exta 64KB page
for the interrupt stack.  It probably should be fixed in case the kernel
virtual address space is increased in the future.

>     If indeed the points written above or some of them need to be
> fixed I will send the diffs of the relevant file to this list.

That would be appreciated.

Eduardo Horvath