1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/*--------------------------------------------------------------------*/
/*--- Basic Mach traps. mach_traps-x86-darwin.S ---*/
/*--------------------------------------------------------------------*/
/*
This file is part of Valgrind, a dynamic binary instrumentation
framework.
Copyright (C) 2006-2017 Apple Inc.
Greg Parker gparker@apple.com
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <http://www.gnu.org/licenses/>.
The GNU General Public License is contained in the file COPYING.
*/
#include "pub_core_basics_asm.h"
#if defined(VGP_x86_darwin)
// DDD: should use __NR_ constants in here instead of the trap numbers
// directly!
// mach_port_name_t task_self_trap(void)
.text
.align 4
.globl _task_self_trap
_task_self_trap:
mov $-28, %eax
int $0x81
ret
// mach_port_name_t host_self_trap(void)
.text
.align 4
.globl _host_self_trap
_host_self_trap:
mov $-29, %eax
int $0x81
ret
// mach_port_name_t thread_self_trap(void)
.text
.align 4
.globl _thread_self_trap
_thread_self_trap:
mov $-27, %eax
int $0x81
ret
// mach_msg_return_t mach_msg_trap(...)
.text
.align 4
.globl _mach_msg_trap
_mach_msg_trap:
mov $-31, %eax
int $0x81
ret
// mach_port_t mach_reply_port(...)
.text
.align 4
.globl _mach_reply_port
_mach_reply_port:
mov $-26, %eax
int $0x81
ret
// boolean_t swtch_pri(int)
.text
.align 4
.globl _swtch_pri
_swtch_pri:
mov $-59, %eax
int $0x81
ret
// kern_return_t semaphore_wait(semaphore_t)
.text
.align 4
.globl _semaphore_wait
_semaphore_wait:
mov $-36, %eax
int $0x81
ret
// kern_return_t semaphore_signal(semaphore_t)
.text
.align 4
.globl _semaphore_signal
_semaphore_signal:
mov $-33, %eax
int $0x81
ret
// kern_return_t semaphore_signal_thread(semaphore_t, thread_t)
.text
.align 4
.globl _semaphore_signal_thread
_semaphore_signal_thread:
mov $-35, %eax
int $0x81
ret
// kern_return_t semaphore_wait_signal(semaphore_t, semaphore_t)
.text
.align 4
.globl _semaphore_wait_signal
_semaphore_wait_signal:
mov $-37, %eax
int $0x81
ret
#endif // defined(VGP_x86_darwin)
/* Let the linker know we don't need an executable stack */
MARK_STACK_NO_EXEC
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
|