diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-05-30 23:26:21 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-05-30 23:26:21 +0200 |
commit | d94ffb4808670993b2c434d612d432548c693832 (patch) | |
tree | ded3f05af0c1c46b5c8a7e5bfae405fe76b34ad2 /sys/src/9/alphapc | |
parent | 9652f5bec54d946775892249c83059c9ca0c6440 (diff) |
kernel: do all fp state fork from procfork() (like pc kernel)
this simplifies the arm ports and keeps all the stuff in one place
instead of spreading it thru notify(), trap() and syscall() functions
and prevents useless fp state copying for kernel procs.
also make sure to save fp in notify while still splhi().
Diffstat (limited to 'sys/src/9/alphapc')
-rw-r--r-- | sys/src/9/alphapc/trap.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/sys/src/9/alphapc/trap.c b/sys/src/9/alphapc/trap.c index 4767c802a..556b0bb13 100644 --- a/sys/src/9/alphapc/trap.c +++ b/sys/src/9/alphapc/trap.c @@ -523,16 +523,16 @@ notify(Ureg *ur) if(up->nnote == 0) return 0; - spllo(); - qlock(&up->debug); - up->notepending = 0; - if(up->fpstate == FPactive){ savefpregs(&up->fpsave); up->fpstate = FPinactive; } up->fpstate |= FPillegal; + spllo(); + qlock(&up->debug); + up->notepending = 0; + n = &up->note[0]; if(strncmp(n->msg, "sys:", 4) == 0) { l = strlen(n->msg); @@ -712,12 +712,6 @@ syscall(Ureg *aur) scallnr = ur->r0; up->scallnr = ur->r0; - - if(scallnr == RFORK && up->fpstate == FPactive){ - savefpregs(&up->fpsave); - up->fpstate = FPinactive; -//print("SR=%lux+", up->fpsave.fpstatus); - } spllo(); sp = ur->sp; |