summaryrefslogtreecommitdiff
path: root/lib/libc/i386
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/i386')
-rw-r--r--lib/libc/i386/gen/rfork_thread.S112
-rw-r--r--lib/libc/i386/sys/i386_clr_watch.c50
-rw-r--r--lib/libc/i386/sys/i386_set_watch.3103
-rw-r--r--lib/libc/i386/sys/i386_set_watch.c88
4 files changed, 0 insertions, 353 deletions
diff --git a/lib/libc/i386/gen/rfork_thread.S b/lib/libc/i386/gen/rfork_thread.S
deleted file mode 100644
index 2d63b67c7d0ca..0000000000000
--- a/lib/libc/i386/gen/rfork_thread.S
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * Copyright (c) 2000 Peter Wemm <peter@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-/*
- * With thanks to John Dyson for the original version of this.
- */
-
-#include <SYS.h>
-
-/*
- * 8 12 16 20
- * rfork_thread(flags, stack_addr, start_fnc, start_arg);
- *
- * flags: Flags to rfork system call. See rfork(2).
- * stack_addr: Top of stack for thread.
- * start_fnc: Address of thread function to call in child.
- * start_arg: Argument to pass to the thread function in child.
- */
-
-ENTRY(rfork_thread)
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
-
- /*
- * Push thread info onto the new thread's stack
- */
- movl 12(%ebp), %esi # get stack addr
-
- subl $4, %esi
- movl 20(%ebp), %eax # get start argument
- movl %eax, (%esi)
-
- subl $4, %esi
- movl 16(%ebp), %eax # get start thread address
- movl %eax, (%esi)
-
- /*
- * Prepare and execute the thread creation syscall
- */
- pushl 8(%ebp)
- pushl $0
- leal SYS_rfork, %eax
- KERNCALL
- jb 2f
-
- /*
- * Check to see if we are in the parent or child
- */
- cmpl $0, %edx
- jnz 1f
- addl $8, %esp
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- .p2align 2
-
- /*
- * If we are in the child (new thread), then
- * set-up the call to the internal subroutine. If it
- * returns, then call __exit.
- */
-1:
- movl %esi,%esp
- popl %eax
- call *%eax
- addl $4, %esp
-
- /*
- * Exit system call
- */
- pushl %eax
- pushl $0
-#ifdef SYS_exit
- leal SYS_exit, %eax
-#else
- leal SYS_sys_exit, %eax
-#endif
- KERNCALL
-
- /*
- * Branch here if the thread creation fails:
- */
-2:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
diff --git a/lib/libc/i386/sys/i386_clr_watch.c b/lib/libc/i386/sys/i386_clr_watch.c
deleted file mode 100644
index 0320634ca76d3..0000000000000
--- a/lib/libc/i386/sys/i386_clr_watch.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2000 Brian S. Dean <bsd@bsdhome.com>
- * All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BRIAN S. DEAN ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BRIAN S. DEAN BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- */
-
-/*
- * $FreeBSD$
- */
-
-
-#include <machine/reg.h>
-#include <machine/sysarch.h>
-
-
-int
-i386_clr_watch(int watchnum, struct dbreg * d)
-{
-
- if (watchnum < 0 || watchnum >= 4)
- return -1;
-
- d->dr7 = d->dr7 & ~((0x3 << (watchnum*2)) | (0x0f << (watchnum*4+16)));
- DBREG_DRX(d,watchnum) = 0;
-
- return 0;
-}
diff --git a/lib/libc/i386/sys/i386_set_watch.3 b/lib/libc/i386/sys/i386_set_watch.3
deleted file mode 100644
index a85ae85c7b5e1..0000000000000
--- a/lib/libc/i386/sys/i386_set_watch.3
+++ /dev/null
@@ -1,103 +0,0 @@
-.\" Copyright (c) 2000 Brian S. Dean
-.\" All rights reserved.
-.\"
-.\" This man-page is based on a similar man-page by Jonathan Lemon
-.\" which is copyrighted under the following conditions:
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 24, 2000
-.Os
-.Dt I386_SET_WATCH 3
-.Sh NAME
-.Nm i386_clr_watch ,
-.Nm i386_set_watch
-.Nd manage i386 debug register values
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.Fd #include <machine/reg.h>
-.Fd #include <machine/sysarch.h>
-.Ft int
-.Fn i386_clr_watch "int watchnum" "struct dbreg *d"
-.Ft int
-.Fn i386_set_watch "int watchnum" "unsigned int watchaddr" "int size" "int access" "struct dbreg *d"
-.Sh DESCRIPTION
-.Fn i386_clr_watch
-will disable the indicated watch point within the specified debug
-register set.
-.Pp
-.Fn i386_set_watch
-will set up the specified debug registers as indicated by the
-parameters. The
-.Fa watchnum
-argument specifies which watch register is used, 0, 1, 2, 3, or -1. If
-.Fa watchnum
-is -1, a free watch register is found and used. If there are no free
-watch registers, an error code of -1 is returned.
-.Fa Watchaddr
-specifies the watch address,
-.Fa size
-specifies the size in bytes of the area to be watched (1, 2, or 4 bytes),
-and
-.Fa access
-specifes the type of watch point:
-.Pp
-.Bd -literal -offset indent -compact
-DBREG_DR7_EXEC An execution breakpoint.
-DBREG_DR7_WRONLY Break only when the watch area is written to.
-DBREG_DR7_RDWR Break when the watch area is read from or written
- to.
-.Ed
-.Pp
-Note that these functions do not actually set or clear breakpoints;
-they manipulate the indicated debug register set. You must use
-.Xr ptrace 2
-to retrieve and install the debug register values for a process.
-.Sh RETURN VALUES
-.Fn i386_clr_watch
-returns 0 on success, or -1 if
-.Fa watchnum
-is invalid (not in the range of 0-3).
-.Pp
-.Fn i386_set_watch
-will return the
-.Fa watchnum
-argument, or the watchnum actually used in the case that
-.Fa watchnum
-is -1 on success. On error,
-.Fn i386_set_watch
-will return -1 indicating that the watchpoint could not be set up
-because either no more watchpoints are available, or
-.Fa watchnum ,
-.Fa size ,
-or
-.Fa access
-is invalid.
-.Sh SEE ALSO
-.Xr ptrace 2 ,
-.Xr procfs 5
-.Sh AUTHORS
-This man page was written by
-.An Brian S. Dean .
diff --git a/lib/libc/i386/sys/i386_set_watch.c b/lib/libc/i386/sys/i386_set_watch.c
deleted file mode 100644
index bb710dc701c3f..0000000000000
--- a/lib/libc/i386/sys/i386_set_watch.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2000 Brian S. Dean <bsd@bsdhome.com>
- * All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BRIAN S. DEAN ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BRIAN S. DEAN BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- */
-
-/*
- * $FreeBSD$
- */
-
-
-#include <machine/reg.h>
-#include <machine/sysarch.h>
-
-
-int
-i386_set_watch(int watchnum, unsigned int watchaddr, int size,
- int access, struct dbreg * d)
-{
- int i;
- unsigned int mask;
-
- if (watchnum == -1) {
- for (i = 0, mask = 0x3; i < 4; i++, mask <<= 2)
- if ((d->dr7 & mask) == 0)
- break;
- if (i < 4)
- watchnum = i;
- else
- return -1;
- }
-
- switch (access) {
- case DBREG_DR7_EXEC:
- size = 1; /* size must be 1 for an execution breakpoint */
- /* fall through */
- case DBREG_DR7_WRONLY:
- case DBREG_DR7_RDWR:
- break;
- default : return -1; break;
- }
-
- /*
- * we can watch a 1, 2, or 4 byte sized location
- */
- switch (size) {
- case 1 : mask = 0x00; break;
- case 2 : mask = 0x01 << 2; break;
- case 4 : mask = 0x03 << 2; break;
- default : return -1; break;
- }
-
- mask |= access;
-
- /* clear the bits we are about to affect */
- d->dr7 &= ~((0x3 << (watchnum*2)) | (0x0f << (watchnum*4+16)));
-
- /* set drN register to the address, N=watchnum */
- DBREG_DRX(d,watchnum) = watchaddr;
-
- /* enable the watchpoint */
- d->dr7 |= (0x2 << (watchnum*2)) | (mask << (watchnum*4+16));
-
- return watchnum;
-}