summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoris <is@NetBSD.org>1997-09-28 12:57:57 +0000
committeris <is@NetBSD.org>1997-09-28 12:57:57 +0000
commit8e9fc838dcaa618b41ebfb02ecb77150834a3f8a (patch)
tree98772cfcadb56bb4964b459bfc0b4bf1abf8a439 /sys
parent4de13c78d37fa818101381bafc94cef1462a9813 (diff)
In the OS glue code for the 060SP, replace the copyin()/copyout() glue by
movs. XXX As our CPP seems to hate the 060SP, I couldn't use assym.h for the PCB_ONFAULT definition, but had to hardwire 64 in the code. This needs to be fixed ASAP, and will be done in the upcoming reorganization of the 060sp Makefiles.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/m68k/060sp/netbsd.S139
-rw-r--r--sys/arch/m68k/060sp/netbsd060sp.S139
2 files changed, 122 insertions, 156 deletions
diff --git a/sys/arch/m68k/060sp/netbsd.S b/sys/arch/m68k/060sp/netbsd.S
index 377a7c0ad7f..1b45337d08a 100644
--- a/sys/arch/m68k/060sp/netbsd.S
+++ b/sys/arch/m68k/060sp/netbsd.S
@@ -1,5 +1,5 @@
#
-# $NetBSD: netbsd.S,v 1.3 1997/06/27 23:32:09 is Exp $
+# $NetBSD: netbsd.S,v 1.4 1997/09/28 12:57:57 is Exp $
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
@@ -158,22 +158,19 @@ user_read:
#
.global _060_dmem_read_byte
_060_dmem_read_byte:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrbs |# supervisor
+ clrl d1 |# return success
+ clrl d0 |# clear whole longword
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrbs |# supervisor
dmrbu:
- clrl sp@- |# clear space on stack for result
- movel #0x1,sp@- |# pass: # bytes to copy
- pea sp@(0x7) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsb a0@,d0
+ bra Lfdone
+
dmrbs:
- clrl d0 |# clear whole longword
- moveb a0@,d0 |# fetch super byte
- clrl d1 |# return success
+ moveb a0@,d0 |# fetch super byte
+ clrl d1 |# return success
rts
#
@@ -195,22 +192,17 @@ dmrbs:
_060_imem_read_word:
_060_dmem_read_word:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrws |# supervisor
+ clrl d1 |# return success
+ clrl d0 |# clear whole longword
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrws |# supervisor
dmrwu:
- clrl sp@- |# clear result space on stack
- movel #0x2,sp@- |# pass: # bytes to copy
- pea sp@(0x6) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsw a0@,d0
+ bra Lfdone
dmrws:
- clrl d0 |# clear whole longword
- movew a0@,d0 |# fetch super word
- clrl d1 |# return success
+ movew a0@,d0 |# fetch super word
rts
#
@@ -235,21 +227,17 @@ dmrws:
_060_imem_read_long:
_060_dmem_read_long:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrls |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrls |# supervisor
dmrlu:
- subql #0x4,sp |# clear result space on stack
- movel #0x4,sp@- |# pass: # bytes to copy
- pea sp@(0x4) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsl a0@,d0
+ bra Lfdone
dmrls:
- movel a0@,d0 |# fetch super longword
- clrl d1 |# return success
+ movel a0@,d0 |# fetch super longword
+ clrl d1 |# return success
rts
#
@@ -266,20 +254,16 @@ dmrls:
#
.global _060_dmem_write_byte
_060_dmem_write_byte:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwbs |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwbs |# supervisor
dmwbu:
- movel d0,sp@- |# put src on stack
- movel #0x1,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0xb) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsb d0,a0@
+ bra Lfdone
dmwbs:
- moveb d0,a0@ |# store super byte
- clrl d1 |# return success
+ moveb d0,a0@ |# store super byte
rts
#
@@ -296,20 +280,16 @@ dmwbs:
#
.global _060_dmem_write_word
_060_dmem_write_word:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwws |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwws |# supervisor
dmwwu:
- movel d0,sp@- |# put src on stack
- movel #0x2,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0xa) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsw d0,a0@
+ bra Lfdone
dmwws:
- movew d0,a0@ |# store super word
- clrl d1 |# return success
+ movew d0,a0@ |# store super word
rts
#
@@ -326,20 +306,23 @@ dmwws:
#
.global _060_dmem_write_long
_060_dmem_write_long:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwls |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwls |# supervisor
dmwlu:
- movel d0,sp@- |# put src on stack
- movel #0x4,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0x8) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsl d0,a0@
+ bra Lfdone
dmwls:
- movel d0,a0@ |# store super longword
- clrl d1 |# return success
+ movel d0,a0@ |# store super longword
+ rts
+
+############################################################################
+Lferr:
+ moveq #-1,d1
+Lfdone:
+ clrl a1@(64) | clear fault handler
rts
############################################################################
diff --git a/sys/arch/m68k/060sp/netbsd060sp.S b/sys/arch/m68k/060sp/netbsd060sp.S
index eb9cdd1bdff..29a4f118c24 100644
--- a/sys/arch/m68k/060sp/netbsd060sp.S
+++ b/sys/arch/m68k/060sp/netbsd060sp.S
@@ -1,5 +1,5 @@
#
-# $NetBSD: netbsd060sp.S,v 1.3 1997/06/27 23:32:09 is Exp $
+# $NetBSD: netbsd060sp.S,v 1.4 1997/09/28 12:57:57 is Exp $
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
@@ -158,22 +158,19 @@ user_read:
#
.global _060_dmem_read_byte
_060_dmem_read_byte:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrbs |# supervisor
+ clrl d1 |# return success
+ clrl d0 |# clear whole longword
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrbs |# supervisor
dmrbu:
- clrl sp@- |# clear space on stack for result
- movel #0x1,sp@- |# pass: # bytes to copy
- pea sp@(0x7) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsb a0@,d0
+ bra Lfdone
+
dmrbs:
- clrl d0 |# clear whole longword
- moveb a0@,d0 |# fetch super byte
- clrl d1 |# return success
+ moveb a0@,d0 |# fetch super byte
+ clrl d1 |# return success
rts
#
@@ -195,22 +192,17 @@ dmrbs:
_060_imem_read_word:
_060_dmem_read_word:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrws |# supervisor
+ clrl d1 |# return success
+ clrl d0 |# clear whole longword
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrws |# supervisor
dmrwu:
- clrl sp@- |# clear result space on stack
- movel #0x2,sp@- |# pass: # bytes to copy
- pea sp@(0x6) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsw a0@,d0
+ bra Lfdone
dmrws:
- clrl d0 |# clear whole longword
- movew a0@,d0 |# fetch super word
- clrl d1 |# return success
+ movew a0@,d0 |# fetch super word
rts
#
@@ -235,21 +227,17 @@ dmrws:
_060_imem_read_long:
_060_dmem_read_long:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmrls |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmrls |# supervisor
dmrlu:
- subql #0x4,sp |# clear result space on stack
- movel #0x4,sp@- |# pass: # bytes to copy
- pea sp@(0x4) |# pass: dst addr (stack)
- movel a0,sp@- |# pass: src addr (user mem)
- bsrl _copyin |# "copy in" the data
- movel d0,d1 |# return success
- addl #0xc,sp |# delete params
- movel sp@+,d0 |# put answer in d0
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsl a0@,d0
+ bra Lfdone
dmrls:
- movel a0@,d0 |# fetch super longword
- clrl d1 |# return success
+ movel a0@,d0 |# fetch super longword
+ clrl d1 |# return success
rts
#
@@ -266,20 +254,16 @@ dmrls:
#
.global _060_dmem_write_byte
_060_dmem_write_byte:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwbs |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwbs |# supervisor
dmwbu:
- movel d0,sp@- |# put src on stack
- movel #0x1,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0xb) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsb d0,a0@
+ bra Lfdone
dmwbs:
- moveb d0,a0@ |# store super byte
- clrl d1 |# return success
+ moveb d0,a0@ |# store super byte
rts
#
@@ -296,20 +280,16 @@ dmwbs:
#
.global _060_dmem_write_word
_060_dmem_write_word:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwws |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwws |# supervisor
dmwwu:
- movel d0,sp@- |# put src on stack
- movel #0x2,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0xa) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsw d0,a0@
+ bra Lfdone
dmwws:
- movew d0,a0@ |# store super word
- clrl d1 |# return success
+ movew d0,a0@ |# store super word
rts
#
@@ -326,20 +306,23 @@ dmwws:
#
.global _060_dmem_write_long
_060_dmem_write_long:
- btst #0x5,a6@(0x4) |# check for supervisor state
- bnes dmwls |# supervisor
+ clrl d1 |# return success
+ btst #0x5,a6@(0x4) |# check for supervisor state
+ bnes dmwls |# supervisor
dmwlu:
- movel d0,sp@- |# put src on stack
- movel #0x4,sp@- |# pass: # bytes to copy
- movel a0,sp@- |# pass: dst addr (user mem)
- pea sp@(0x8) |# pass: src addr (stack)
- bsrl _copyout |# "copy out" the data
- movel d0,d1 |# return success
- addl #0x10,sp |# delete params + src
- rts
+ movl _curpcb,a1 | fault handler
+ movl #Lferr,a1@(64) | set it
+ movsl d0,a0@
+ bra Lfdone
dmwls:
- movel d0,a0@ |# store super longword
- clrl d1 |# return success
+ movel d0,a0@ |# store super longword
+ rts
+
+############################################################################
+Lferr:
+ moveq #-1,d1
+Lfdone:
+ clrl a1@(64) | clear fault handler
rts
############################################################################