Update from main archive 961219
This commit is contained in:
parent
1003a96da9
commit
910e2e14fc
|
@ -211,7 +211,7 @@ _dl_start_user:
|
||||||
stq $2, 0($sp)
|
stq $2, 0($sp)
|
||||||
/* Load _dl_default_scope[2] into s1 to pass to _dl_init_next. */
|
/* Load _dl_default_scope[2] into s1 to pass to _dl_init_next. */
|
||||||
0: ldq $10, _dl_default_scope+16
|
0: ldq $10, _dl_default_scope+16
|
||||||
/* Call _dl_init_next to return the address of an initalizer
|
/* Call _dl_init_next to return the address of an initializer
|
||||||
function to run. */
|
function to run. */
|
||||||
1: mov $10, $16
|
1: mov $10, $16
|
||||||
jsr $26, _dl_init_next
|
jsr $26, _dl_init_next
|
||||||
|
|
|
@ -55,7 +55,7 @@ __DTOR_LIST__:
|
||||||
jsr $26,__do_global_dtors_aux
|
jsr $26,__do_global_dtors_aux
|
||||||
|
|
||||||
/* Must match the alignment we got from crti.o else we get
|
/* Must match the alignment we got from crti.o else we get
|
||||||
zero-filled holes in our _fini function and thense SIGILL. */
|
zero-filled holes in our _fini function and then SIGILL. */
|
||||||
.align 3
|
.align 3
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -17,7 +17,7 @@ License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
Cambridge, MA 02139, USA. */
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
/* Return the address of the last occurrance of a given character
|
/* Return the address of the last occurrence of a given character
|
||||||
within a null-terminated string, or null if it is not found.
|
within a null-terminated string, or null if it is not found.
|
||||||
|
|
||||||
This is generally scheduled for the EV5 (got to look out for my own
|
This is generally scheduled for the EV5 (got to look out for my own
|
||||||
|
|
|
@ -118,7 +118,7 @@ L(Lend:)
|
||||||
rts
|
rts
|
||||||
|
|
||||||
/* We loop from least significant end of the arrays, which is only
|
/* We loop from least significant end of the arrays, which is only
|
||||||
permissable if the source and destination don't overlap, since the
|
permissible if the source and destination don't overlap, since the
|
||||||
function is documented to work for overlapping source and destination. */
|
function is documented to work for overlapping source and destination. */
|
||||||
|
|
||||||
L(Lspecial:)
|
L(Lspecial:)
|
||||||
|
|
|
@ -71,7 +71,7 @@ L(Lnormal:)
|
||||||
movel MEM_POSTINC(s_ptr),R(d2)
|
movel MEM_POSTINC(s_ptr),R(d2)
|
||||||
movel R(d2),R(d0)
|
movel R(d2),R(d0)
|
||||||
lsll R(d5),R(d0) /* compute carry limb */
|
lsll R(d5),R(d0) /* compute carry limb */
|
||||||
|
|
||||||
lsrl R(cnt),R(d2)
|
lsrl R(cnt),R(d2)
|
||||||
movel R(d2),R(d1)
|
movel R(d2),R(d1)
|
||||||
subql #1,R(s_size)
|
subql #1,R(s_size)
|
||||||
|
@ -107,7 +107,7 @@ L(Lend:)
|
||||||
rts
|
rts
|
||||||
|
|
||||||
/* We loop from most significant end of the arrays, which is only
|
/* We loop from most significant end of the arrays, which is only
|
||||||
permissable if the source and destination don't overlap, since the
|
permissible if the source and destination don't overlap, since the
|
||||||
function is documented to work for overlapping source and destination. */
|
function is documented to work for overlapping source and destination. */
|
||||||
|
|
||||||
L(Lspecial:)
|
L(Lspecial:)
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
Library General Public License for more details.
|
Library General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU Library General Public
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
not, write to the Free Software Foundation, Inc.,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define ELF_MACHINE_NAME "MIPS"
|
#define ELF_MACHINE_NAME "MIPS"
|
||||||
|
|
||||||
|
@ -27,12 +27,12 @@
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
/* DT_MIPS macro ranslate a processor specific dynamic tag to the index
|
/* Translate a processor specific dynamic tag to the index
|
||||||
in l_info array. */
|
in l_info array. */
|
||||||
#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
|
#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
/* XXX If FLAGS has the MAP_ALIGN bit, we need 64k alignement. */
|
/* XXX If FLAGS has the MAP_ALIGN bit, we need 64k alignment. */
|
||||||
#ifndef MAP_ALIGN
|
#ifndef MAP_ALIGN
|
||||||
#define MAP_ALIGN 0x1000
|
#define MAP_ALIGN 0x1000
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,29 +1,28 @@
|
||||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
/* Copyright (C) 1994, 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
|
Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
|
||||||
On-Line Applications Research Corporation.
|
On-Line Applications Research Corporation.
|
||||||
|
|
||||||
This file is part of the GNU C Library.
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
published by the Free Software Foundation; either version 2 of the
|
||||||
modify it under the terms of the GNU Library General Public License as
|
License, or (at your option) any later version.
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version.
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
Library General Public License for more details.
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
You should have received a copy of the GNU Library General Public
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
Boston, MA 02111-1307, USA. */
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
|
||||||
Cambridge, MA 02139, USA. */
|
|
||||||
|
|
||||||
/* i960ca.h
|
/* i960ca.h
|
||||||
*
|
*
|
||||||
* This file contains macros which are used to access i80960CA
|
* This file contains macros which are used to access i80960CA
|
||||||
* registers which are not addressable by C. The functions
|
* registers which are not addressable by C. The functions
|
||||||
* in this file sould be useful to the developer of target
|
* in this file should be useful to the developer of target
|
||||||
* specific code.
|
* specific code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -37,22 +36,22 @@ typedef unsigned int unsigned32;
|
||||||
/*
|
/*
|
||||||
* Intel i80960CA Processor Control Block
|
* Intel i80960CA Processor Control Block
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct i80960ca_prcb {
|
struct i80960ca_prcb {
|
||||||
unsigned32 *fault_tbl; /* fault table base address */
|
unsigned32 *fault_tbl; /* fault table base address */
|
||||||
struct i80960ca_ctltbl
|
struct i80960ca_ctltbl
|
||||||
*control_tbl; /* control table base address */
|
*control_tbl; /* control table base address */
|
||||||
unsigned32 initial_ac; /* AC register initial value */
|
unsigned32 initial_ac; /* AC register initial value */
|
||||||
unsigned32 fault_config; /* fault configuration word */
|
unsigned32 fault_config; /* fault configuration word */
|
||||||
void *intr_tbl; /* interrupt table base address */
|
void *intr_tbl; /* interrupt table base address */
|
||||||
void *sys_proc_tbl; /* system procedure table */
|
void *sys_proc_tbl; /* system procedure table */
|
||||||
/* base address */
|
/* base address */
|
||||||
unsigned32 reserved; /* reserved */
|
unsigned32 reserved; /* reserved */
|
||||||
unsigned32 *intr_stack; /* interrupt stack pointer */
|
unsigned32 *intr_stack; /* interrupt stack pointer */
|
||||||
unsigned32 ins_cache_cfg; /* instruction cache */
|
unsigned32 ins_cache_cfg; /* instruction cache */
|
||||||
/* configuration word */
|
/* configuration word */
|
||||||
unsigned32 reg_cache_cfg; /* register cache */
|
unsigned32 reg_cache_cfg; /* register cache */
|
||||||
/* configuration word */
|
/* configuration word */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -128,7 +127,7 @@ struct i80960ca_ctltbl {
|
||||||
: "0" (_addr), "1" (_mask) ); \
|
: "0" (_addr), "1" (_mask) ); \
|
||||||
(prev) = _mask; \
|
(prev) = _mask; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define delay( microseconds ) \
|
#define delay( microseconds ) \
|
||||||
{ register unsigned32 _delay=(microseconds); \
|
{ register unsigned32 _delay=(microseconds); \
|
||||||
register unsigned32 _tmp; \
|
register unsigned32 _tmp; \
|
||||||
|
@ -185,22 +184,22 @@ struct i80960ca_ctltbl {
|
||||||
: "0" (_cmd), "1" (_next), "2" (_prcb) ); \
|
: "0" (_cmd), "1" (_next), "2" (_prcb) ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned32 pend_intrs()
|
static inline unsigned32 pend_intrs()
|
||||||
{ register unsigned32 _intr=0;
|
{ register unsigned32 _intr=0;
|
||||||
asm volatile( "mov sf0,%0" : "=d" (_intr) : "0" (_intr) );
|
asm volatile( "mov sf0,%0" : "=d" (_intr) : "0" (_intr) );
|
||||||
return ( _intr );
|
return ( _intr );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned32 mask_intrs()
|
static inline unsigned32 mask_intrs()
|
||||||
{ register unsigned32 _intr=0;
|
{ register unsigned32 _intr=0;
|
||||||
asm volatile( "mov sf1,%0" : "=d" (_intr) : "0" (_intr) );
|
asm volatile( "mov sf1,%0" : "=d" (_intr) : "0" (_intr) );
|
||||||
return( _intr );
|
return( _intr );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned32 get_fp()
|
static inline unsigned32 get_fp()
|
||||||
{ register unsigned32 _fp=0;
|
{ register unsigned32 _fp=0;
|
||||||
asm volatile( "mov fp,%0" : "=d" (_fp) : "0" (_fp) );
|
asm volatile( "mov fp,%0" : "=d" (_fp) : "0" (_fp) );
|
||||||
return ( _fp );
|
return ( _fp );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,34 +1,32 @@
|
||||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
/* Copyright (C) 1994, 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
|
Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
|
||||||
On-Line Applications Research Corporation.
|
On-Line Applications Research Corporation.
|
||||||
|
|
||||||
This file is part of the GNU C Library.
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
published by the Free Software Foundation; either version 2 of the
|
||||||
modify it under the terms of the GNU Library General Public License as
|
License, or (at your option) any later version.
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version.
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
Library General Public License for more details.
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
You should have received a copy of the GNU Library General Public
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
Boston, MA 02111-1307, USA. */
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
|
||||||
Cambridge, MA 02139, USA. */
|
|
||||||
|
|
||||||
#include <ansidecl.h>
|
|
||||||
#include <standalone.h>
|
#include <standalone.h>
|
||||||
#include "m68020.h"
|
#include "m68020.h"
|
||||||
|
|
||||||
/* Console IO routines for a Motorola MVME135/MVME136 board.
|
/* Console IO routines for a Motorola MVME135/MVME136 board.
|
||||||
|
|
||||||
They currently use the B port. It should be possible to
|
They currently use the B port. It should be possible to
|
||||||
use the A port by filling in the reset of the chip structure,
|
use the A port by filling in the reset of the chip structure,
|
||||||
adding an ifdef for PORTA/PORTB, and switching the addresses,
|
adding an ifdef for PORTA/PORTB, and switching the addresses,
|
||||||
and maybe the macroes based on the macro. */
|
and maybe the macros based on the macro. */
|
||||||
|
|
||||||
/* M68681 DUART chip register structures and constants */
|
/* M68681 DUART chip register structures and constants */
|
||||||
|
|
||||||
|
@ -69,14 +67,15 @@ XON/XOFF flow control. */
|
||||||
#define XOFF 0x13 /* control-S */
|
#define XOFF 0x13 /* control-S */
|
||||||
|
|
||||||
int
|
int
|
||||||
DEFUN( _Console_Putc, (ch), char ch )
|
_Console_Putc (ch)
|
||||||
|
char ch;
|
||||||
{
|
{
|
||||||
while ( ! (RD_M68681->srb & TXRDYB) ) ;
|
while ( ! (RD_M68681->srb & TXRDYB) ) ;
|
||||||
while ( RD_M68681->srb & RXRDYB ) /* must be an XOFF */
|
while ( RD_M68681->srb & RXRDYB ) /* must be an XOFF */
|
||||||
if ( RD_M68681->rbb == XOFF )
|
if ( RD_M68681->rbb == XOFF )
|
||||||
do {
|
do {
|
||||||
while ( ! (RD_M68681->srb & RXRDYB) ) ;
|
while ( ! (RD_M68681->srb & RXRDYB) ) ;
|
||||||
} while ( RD_M68681->rbb != XON );
|
} while ( RD_M68681->rbb != XON );
|
||||||
|
|
||||||
WR_M68681->tbb = ch;
|
WR_M68681->tbb = ch;
|
||||||
return( 0 );
|
return( 0 );
|
||||||
|
@ -87,10 +86,11 @@ DEFUN( _Console_Putc, (ch), char ch )
|
||||||
This routine reads a character from the UART and returns it. */
|
This routine reads a character from the UART and returns it. */
|
||||||
|
|
||||||
int
|
int
|
||||||
DEFUN( _Console_Getc, (poll), int poll )
|
_Console_Getc (poll)
|
||||||
|
int poll;
|
||||||
{
|
{
|
||||||
if ( poll ) {
|
if ( poll ) {
|
||||||
if ( !(RD_M68681->srb & RXRDYB) )
|
if ( !(RD_M68681->srb & RXRDYB) )
|
||||||
return -1;
|
return -1;
|
||||||
else
|
else
|
||||||
return RD_M68681->rbb;
|
return RD_M68681->rbb;
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
/* Structure and constand definitions for sigaction et al. OSF/1 version.
|
/* Structure and constant definitions for sigaction et al. OSF/1 version.
|
||||||
Copyright (C) 1993, 1996 Free Software Foundation, Inc.
|
Copyright (C) 1993, 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
published by the Free Software Foundation; either version 2 of the
|
published by the Free Software Foundation; either version 2 of the
|
||||||
License, or (at your option) any later version.
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Library General Public License for more details.
|
Library General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU Library General Public
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Cambridge, MA 02139, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
/* Structure describing the action to be taken when a signal arrives. */
|
/* Structure describing the action to be taken when a signal arrives. */
|
||||||
struct sigaction
|
struct sigaction
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
/* The mremap system call is special because it needs to return
|
||||||
|
its value in register %a0. */
|
||||||
|
|
||||||
|
.text
|
||||||
|
PSEUDO (__mremap, mremap, 4)
|
||||||
|
move.l %d0, %a0
|
||||||
|
rts
|
||||||
|
PSEUDO_END (__mremap)
|
||||||
|
weak_alias (__mremap, mremap)
|
|
@ -36,7 +36,7 @@
|
||||||
#endif /* LIBC_SCCS and not lint */
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the first occurence of c in the memory at cp (length n).
|
* Find the first occurrence of c in the memory at cp (length n).
|
||||||
* Return pointer to match or null pointer.
|
* Return pointer to match or null pointer.
|
||||||
*
|
*
|
||||||
* This code optimises the usual case (0 < n < 65535).
|
* This code optimises the usual case (0 < n < 65535).
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#endif /* LIBC_SCCS and not lint */
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the first occurence of c in the string cp.
|
* Find the first occurrence of c in the string cp.
|
||||||
* Return pointer to match or null pointer.
|
* Return pointer to match or null pointer.
|
||||||
*
|
*
|
||||||
* char *
|
* char *
|
||||||
|
@ -58,7 +58,7 @@ ENTRY(strchr, 0)
|
||||||
*/
|
*/
|
||||||
movab tbl,r3 /* r3 = base of table */
|
movab tbl,r3 /* r3 = base of table */
|
||||||
bbss $0,(r3),Lreent /* ensure not reentering */
|
bbss $0,(r3),Lreent /* ensure not reentering */
|
||||||
movab (r3)[r2],r5
|
movab (r3)[r2],r5
|
||||||
incb (r5) /* mark both '\0' and c */
|
incb (r5) /* mark both '\0' and c */
|
||||||
0:
|
0:
|
||||||
scanc r4,(r1),(r3),$1 /* look for c or '\0' */
|
scanc r4,(r1),(r3),$1 /* look for c or '\0' */
|
||||||
|
|
|
@ -53,14 +53,14 @@ ENTRY(strncmp, 0)
|
||||||
movl 4(ap),r1 # r1 = s1
|
movl 4(ap),r1 # r1 = s1
|
||||||
movq 8(ap),r3 # r3 = s2; r4 = n
|
movq 8(ap),r3 # r3 = s2; r4 = n
|
||||||
1:
|
1:
|
||||||
clrl r5 # calculate min bytes to next page boundry
|
clrl r5 # calculate min bytes to next page boundary
|
||||||
subb3 r1,$255,r5 # r5 = (bytes - 1) to end of page for s1
|
subb3 r1,$255,r5 # r5 = (bytes - 1) to end of page for s1
|
||||||
subb3 r3,$255,r0 # r0 = (bytes - 1) to end of page for s2
|
subb3 r3,$255,r0 # r0 = (bytes - 1) to end of page for s2
|
||||||
cmpb r0,r5 # r5 = min(r0, r5);
|
cmpb r0,r5 # r5 = min(r0, r5);
|
||||||
bgtru 2f
|
bgtru 2f
|
||||||
movb r0,r5
|
movb r0,r5
|
||||||
2:
|
2:
|
||||||
incl r5 # r5 = min bytes to next page boundry
|
incl r5 # r5 = min bytes to next page boundary
|
||||||
cmpl r4,r5 # r5 = min(n, r5);
|
cmpl r4,r5 # r5 = min(n, r5);
|
||||||
bgeq 3f
|
bgeq 3f
|
||||||
movl r4,r5
|
movl r4,r5
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#endif /* LIBC_SCCS and not lint */
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the last occurence of c in the string cp.
|
* Find the last occurrence of c in the string cp.
|
||||||
* Return pointer to match or null pointer.
|
* Return pointer to match or null pointer.
|
||||||
*
|
*
|
||||||
* char *
|
* char *
|
||||||
|
|
Loading…
Reference in New Issue