Use callee-saved registers in RAS processing.
This commit is contained in:
parent
7443ad1b01
commit
5abd84e433
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: locore.S,v 1.3 2002/12/17 19:47:15 gmcgarry Exp $ */
|
/* $NetBSD: locore.S,v 1.4 2002/12/17 20:49:07 gmcgarry Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
|
||||||
@ -1944,22 +1944,19 @@ switch_restored:
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for restartable atomic sequences (RAS)
|
* Check for restartable atomic sequences (RAS)
|
||||||
* XXX %edi reloads are not necessary here as %edi is callee-saved!
|
|
||||||
*/
|
*/
|
||||||
movl CPUVAR(CURPROC),%edi
|
movl CPUVAR(CURPROC),%edi
|
||||||
cmpl $0,P_NRAS(%edi)
|
cmpl $0,P_NRAS(%edi)
|
||||||
je 1f
|
je 1f
|
||||||
movl P_MD_REGS(%edi),%edx
|
movl P_MD_REGS(%edi),%ebx
|
||||||
movl TF_EIP(%edx),%eax
|
movl TF_EIP(%ebx),%eax
|
||||||
pushl %eax
|
pushl %eax
|
||||||
pushl %edi
|
pushl %edi
|
||||||
call _C_LABEL(ras_lookup)
|
call _C_LABEL(ras_lookup)
|
||||||
addl $8,%esp
|
addl $8,%esp
|
||||||
cmpl $-1,%eax
|
cmpl $-1,%eax
|
||||||
je 1f
|
je 1f
|
||||||
movl CPUVAR(CURPROC),%edi
|
movl %eax,TF_EIP(%ebx)
|
||||||
movl P_MD_REGS(%edi),%edx
|
|
||||||
movl %eax,TF_EIP(%edx)
|
|
||||||
1:
|
1:
|
||||||
|
|
||||||
switch_return:
|
switch_return:
|
||||||
|
Loading…
Reference in New Issue
Block a user