The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/osfmk/ppc/db_machdep.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /*
   26  * @OSF_COPYRIGHT@
   27  */
   28 /* 
   29  * Mach Operating System
   30  * Copyright (c) 1991,1990 Carnegie Mellon University
   31  * All Rights Reserved.
   32  * 
   33  * Permission to use, copy, modify and distribute this software and its
   34  * documentation is hereby granted, provided that both the copyright
   35  * notice and this permission notice appear in all copies of the
   36  * software, derivative works or modified versions, and any portions
   37  * thereof, and that both notices appear in supporting documentation.
   38  * 
   39  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   40  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
   41  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   42  * 
   43  * Carnegie Mellon requests users of this software to return to
   44  * 
   45  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   46  *  School of Computer Science
   47  *  Carnegie Mellon University
   48  *  Pittsburgh PA 15213-3890
   49  * 
   50  * any improvements or extensions that they make and grant Carnegie Mellon
   51  * the rights to redistribute these changes.
   52  */
   53 /*
   54  */
   55 
   56 #ifndef _PPC_DB_MACHDEP_H_
   57 #define _PPC_DB_MACHDEP_H_
   58 
   59 /*
   60  * Machine-dependent defines for new kernel debugger.
   61  */
   62 
   63 #include <kern/kern_types.h>
   64 #include <mach/ppc/vm_types.h>
   65 #include <mach/ppc/vm_param.h>
   66 #include <ppc/thread.h>         /* for thread_status */
   67 #include <ppc/trap.h>
   68 #include <ppc/proc_reg.h>
   69 #include <ppc/savearea.h>
   70 
   71 typedef addr64_t db_addr_t;     /* address - unsigned */
   72 typedef uint64_t db_expr_t;     /* expression - signed???  try unsigned */
   73 
   74 typedef struct savearea db_regs_t;
   75 db_regs_t       ddb_regs;       /* register state */
   76 #define DDB_REGS        (&ddb_regs)
   77 extern int      db_active;      /* ddb is active */
   78 
   79 #define PC_REGS(regs)   ((db_addr_t)(regs)->save_srr0)
   80 
   81 #define BKPT_INST       0x7c810808      /* breakpoint instruction */
   82 #define BKPT_SIZE       (4)             /* size of breakpoint inst */
   83 #define BKPT_SET(inst)  (BKPT_INST)
   84 
   85 #define db_clear_single_step(regs)      ((regs)->save_srr1 &= ~MASK(MSR_SE))
   86 #define db_set_single_step(regs)        ((regs)->save_srr1 |= MASK(MSR_SE))
   87 
   88 #define IS_BREAKPOINT_TRAP(type, code)  (FALSE)
   89 #define IS_WATCHPOINT_TRAP(type, code)  (FALSE)
   90 
   91 #define inst_trap_return(ins)   (FALSE)
   92 #define inst_return(ins)        (FALSE)
   93 #define inst_call(ins)          (FALSE)
   94 
   95 int db_inst_load(unsigned long);
   96 int db_inst_store(unsigned long);
   97 
   98 /* access capability and access macros */
   99 
  100 #define DB_ACCESS_LEVEL DB_ACCESS_ANY   /* any space */
  101 #define DB_CHECK_ACCESS(addr,size,task)                         \
  102         db_check_access(addr,size,task)
  103 #define DB_PHYS_EQ(task1,addr1,task2,addr2)                     \
  104         db_phys_eq(task1,addr1,task2,addr2)
  105 #define DB_VALID_KERN_ADDR(addr)                                \
  106         ((addr) >= VM_MIN_KERNEL_ADDRESS &&                     \
  107          (addr) < vm_last_addr)
  108 #define DB_VALID_ADDRESS(addr,user)                             \
  109         ((!(user) && DB_VALID_KERN_ADDR(addr)) ||               \
  110          ((user) && (addr) < VM_MAX_ADDRESS))
  111 
  112 /*
  113  * Given pointer to savearea, determine if it represents
  114  * a thread executing a) in user space, b) in the kernel, or c)
  115  * in a kernel-loaded task.  Return true for cases a) and c).
  116  */
  117 #define IS_USER_TRAP(regs)      \
  118      (USER_MODE(regs->save_srr1))
  119 
  120 extern boolean_t        db_check_access(
  121                                 vm_offset_t     addr,
  122                                 int             size,
  123                                 task_t          task);
  124 extern boolean_t        db_phys_eq(
  125                                 task_t          task1,
  126                                 vm_offset_t     addr1,
  127                                 task_t          task2,
  128                                 vm_offset_t     addr2);
  129 extern db_addr_t        db_disasm(
  130                                 db_addr_t       loc,
  131                                 boolean_t       altfmt,
  132                                 task_t          task);
  133 extern void             db_read_bytes(
  134                                 vm_offset_t     addr,
  135                                 int             size,
  136                                 char            *data,
  137                                 task_t          task);
  138 extern void             db_write_bytes(
  139                                 vm_offset_t     addr,
  140                                 int             size,
  141                                 char            *data,
  142                                 task_t          task);
  143 extern void             db_stack_trace_cmd(
  144                                 db_expr_t       addr,
  145                                 boolean_t       have_addr,
  146                                 db_expr_t       count,
  147                                 char            *modif);
  148 extern void             db_reboot(
  149                                 db_expr_t       addr,
  150                                 boolean_t       have_addr,
  151                                 db_expr_t       count,
  152                                 char            *modif);
  153 extern void             db_low_trace(
  154                                 db_expr_t       addr,
  155                                 int             have_addr,
  156                                 db_expr_t       count,
  157                                 char            *modif);
  158 extern void             db_to_gdb(
  159                                 void);
  160 
  161 
  162 /* macros for printing OS server dependent task name */
  163 
  164 #define DB_TASK_NAME(task)      db_task_name(task)
  165 #define DB_TASK_NAME_TITLE      "COMMAND                                "
  166 #define DB_TASK_NAME_LEN        39
  167 #define DB_NULL_TASK_NAME       "?                      "
  168 
  169 extern void             db_task_name(
  170                                 task_t                  task);
  171 
  172 /* macro for checking if a thread has used floating-point */
  173 
  174 #define db_act_fp_used(act)     (FALSE)
  175 
  176 extern void             kdb_trap(
  177                                 int                     type,
  178                                 struct savearea *regs);
  179 extern boolean_t        db_trap_from_asm(
  180                                 struct savearea *regs);
  181 extern void             kdb_on(
  182                                 int                     cpu);
  183 extern void             cnpollc(
  184                                 boolean_t               on);
  185 
  186 extern boolean_t        db_phys_cmp(
  187                                 vm_offset_t, 
  188                                 vm_offset_t, 
  189                                 vm_size_t);
  190 
  191 #endif  /* _PPC_DB_MACHDEP_H_ */

Cache object: b2779f33714a18dad501e00b0517c550


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.