Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: [matt-nb5-mips64] src/sys/arch/mips/mips

On Aug 24, 2009, at 9:09 AM, Jason Thorpe wrote:

On Aug 23, 2009, at 9:04 PM, Matt Thomas wrote:

Module Name:    src
Committed By:   matt
Date:           Mon Aug 24 04:04:53 UTC 2009

Modified Files:
        src/sys/arch/mips/mips [matt-nb5-mips64]: mipsX_subr.S

Log Message:
SyscallCall exception didn't save the temporaries which libc no longer likes.
So now it saves them.

This seems wrong... the syscall trap is like making a function call, so the temporaries should be expected to be clobbered. If the syscall stubs don't like this, they should make use of callee-saved registers.

What am I missing?

That the syscall needs the arguments and stack pointer unchanged from the start of syscall stub. Thus if the syscall needs to store things, it's limited t using the temporary registers. And MIPS NewABI makes the global pointer callee-saved so it has to be saved somewhere. And that place is a temporary register. If the trap nukes the temporaries, that would be bad.

Home | Main Index | Thread Index | Old Index