1 /*- 2 * Copyright (c) 2000, 2001 Ben Harris 3 * Copyright (c) 1996 Scott K. Stevens 4 * 5 * Mach Operating System 6 * Copyright (c) 1991,1990 Carnegie Mellon University 7 * All Rights Reserved. 8 * 9 * Permission to use, copy, modify and distribute this software and its 10 * documentation is hereby granted, provided that both the copyright 11 * notice and this permission notice appear in all copies of the 12 * software, derivative works or modified versions, and any portions 13 * thereof, and that both notices appear in supporting documentation. 14 * 15 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 16 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 17 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 18 * 19 * Carnegie Mellon requests users of this software to return to 20 * 21 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 22 * School of Computer Science 23 * Carnegie Mellon University 24 * Pittsburgh PA 15213-3890 25 * 26 * any improvements or extensions that they make and grant Carnegie the 27 * rights to redistribute these changes. 28 * 29 * $FreeBSD$ 30 */ 31 32 #ifndef _MACHINE_STACK_H_ 33 #define _MACHINE_STACK_H_ 34 35 #define INKERNEL(va) (((vm_offset_t)(va)) >= VM_MIN_KERNEL_ADDRESS) 36 37 #define FR_SCP (0) 38 #define FR_RLV (-1) 39 #define FR_RSP (-2) 40 #define FR_RFP (-3) 41 42 /* The state of the unwind process */ 43 struct unwind_state { 44 uint32_t registers[16]; 45 uint32_t start_pc; 46 uint32_t *insn; 47 u_int entries; 48 u_int byte; 49 uint16_t update_mask; 50 }; 51 52 /* The register names */ 53 #define FP 11 54 #define SP 13 55 #define LR 14 56 #define PC 15 57 58 #ifdef _KERNEL 59 60 int unwind_stack_one(struct unwind_state *, int); 61 62 struct linker_file; 63 void unwind_module_loaded(struct linker_file *); 64 void unwind_module_unloaded(struct linker_file *); 65 66 #endif 67 68 #endif /* !_MACHINE_STACK_H_ */ 69