+/*
+ * copypage(fromaddr, toaddr)
+ *
+ * Optimized version of bcopy for a single page-aligned NBPG byte copy.
+ */
+ENTRY(copypage)
+ movl sp@(4),a0 | source address
+ movl sp@(8),a1 | destination address
+ movl #NBPG/32,d0 | number of 32 byte chunks
+#if defined(HP380)
+ cmpl #-2,_mmutype | 68040?
+ jne Lmlloop | no, use movl
+Lm16loop:
+ .long 0xf6209000 | move16 a0@+,a1@+
+ .long 0xf6209000 | move16 a0@+,a1@+
+ subql #1,d0
+ jne Lm16loop
+ rts
+#endif
+Lmlloop:
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ movl a0@+,a1@+
+ subql #1,d0
+ jne Lmlloop
+ rts
+