* libc/sys/mmixware/sbrk.c (_sbrk): Drop unused extern declaration
of "end". Mark allocated memory by applying PRELD.
This commit is contained in:
parent
821d651917
commit
1ad660ece1
@ -1,3 +1,8 @@
|
|||||||
|
2012-10-21 Hans-Peter Nilsson <hp@bitrange.com>
|
||||||
|
|
||||||
|
* libc/sys/mmixware/sbrk.c (_sbrk): Drop unused extern declaration
|
||||||
|
of "end". Mark allocated memory by applying PRELD.
|
||||||
|
|
||||||
2012-10-16 Gregory Pietsch <gpietsch@comcast.net>
|
2012-10-16 Gregory Pietsch <gpietsch@comcast.net>
|
||||||
|
|
||||||
* libc/stdlib/getopt.c (getopt_internal): Align handling of colon to
|
* libc/stdlib/getopt.c (getopt_internal): Align handling of colon to
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* sbrk for MMIXware.
|
/* sbrk for MMIXware.
|
||||||
|
|
||||||
Copyright (C) 2001 Hans-Peter Nilsson
|
Copyright (C) 2001, 2012 Hans-Peter Nilsson
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software is
|
Permission to use, copy, modify, and distribute this software is
|
||||||
freely granted, provided that the above copyright notice, this notice
|
freely granted, provided that the above copyright notice, this notice
|
||||||
@ -34,10 +34,26 @@ __asm__ (" .global _Sbrk_high\n"
|
|||||||
caddr_t
|
caddr_t
|
||||||
_sbrk (size_t incr)
|
_sbrk (size_t incr)
|
||||||
{
|
{
|
||||||
extern char end; /* Defined by the linker */
|
|
||||||
char *prev_heap_end;
|
char *prev_heap_end;
|
||||||
|
|
||||||
prev_heap_end = _Sbrk_high;
|
prev_heap_end = _Sbrk_high;
|
||||||
|
|
||||||
|
/* A simulator that requires explicit memory allocation is expected
|
||||||
|
to hook that to the PRELD data prefetch insn, which is otherwise
|
||||||
|
typically a nop. */
|
||||||
|
if ((long) incr > 0)
|
||||||
|
{
|
||||||
|
size_t n = incr;
|
||||||
|
char *p = prev_heap_end;
|
||||||
|
#define A(N) __asm__ ("preld " #N ",%0,0" : : "r" (p))
|
||||||
|
#define PRELDOWNTO(N) while (n >= N + 1) { A(N); n -= N + 1; p += N + 1; }
|
||||||
|
|
||||||
|
PRELDOWNTO (255);
|
||||||
|
PRELDOWNTO (31);
|
||||||
|
PRELDOWNTO (3);
|
||||||
|
PRELDOWNTO (0);
|
||||||
|
}
|
||||||
|
|
||||||
_Sbrk_high += incr;
|
_Sbrk_high += incr;
|
||||||
return (caddr_t) prev_heap_end;
|
return (caddr_t) prev_heap_end;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user