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/machine_routines.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 #ifndef _PPC_MACHINE_ROUTINES_H_
   30 #define _PPC_MACHINE_ROUTINES_H_
   31 
   32 #include <mach/mach_types.h>
   33 #include <mach/boolean.h>
   34 #include <kern/kern_types.h>
   35 #include <kern/sched_prim.h>
   36 #include <pexpert/pexpert.h>
   37 
   38 #include <sys/appleapiopts.h>
   39 
   40 /* Get Interrupts Enabled */
   41 boolean_t ml_get_interrupts_enabled(void);
   42 
   43 /* Set Interrupts Enabled */
   44 boolean_t ml_set_interrupts_enabled(boolean_t enable);
   45 
   46 /* Check if running at interrupt context */
   47 boolean_t ml_at_interrupt_context(void);
   48 
   49 /* Generate a fake interrupt */
   50 void ml_cause_interrupt(void);
   51 
   52 /* Type for the IPI Hander */
   53 typedef void (*ipi_handler_t)(void);
   54 
   55 /* Type for the Time Base Enable function */
   56 typedef void (*time_base_enable_t)(cpu_id_t cpu_id, boolean_t enable);
   57 
   58 /* enables (or disables) the processor nap mode the function returns the previous value*/
   59 boolean_t ml_enable_nap(
   60         int target_cpu,
   61         boolean_t nap_enabled);
   62 
   63 /* Put the processor to sleep */
   64 void ml_ppc_sleep(void);
   65 void ml_get_timebase(unsigned long long *timstamp);
   66 void ml_sense__nmi(void);
   67 
   68 int ml_enable_cache_level(int cache_level, int enable);
   69 
   70 void ml_static_mfree(
   71         vm_offset_t,
   72         vm_size_t);
   73         
   74 /* Init Interrupts */
   75 void ml_install_interrupt_handler(
   76         void *nub,
   77         int source,
   78         void *target,
   79         IOInterruptHandler handler,
   80         void *refCon);
   81                
   82 #ifdef __APPLE_API_UNSTABLE
   83 
   84 vm_offset_t
   85 ml_static_ptovirt(
   86         vm_offset_t);
   87 
   88 /* virtual to physical on wired pages */
   89 vm_offset_t ml_vtophys(
   90         vm_offset_t vaddr);
   91 
   92 /* PCI config cycle probing */
   93 boolean_t ml_probe_read(
   94         vm_offset_t paddr,
   95         unsigned int *val);
   96 boolean_t ml_probe_read_64(
   97         addr64_t paddr,
   98         unsigned int *val);
   99 
  100 /* Read physical address byte */
  101 unsigned int ml_phys_read_byte(
  102         vm_offset_t paddr);
  103 unsigned int ml_phys_read_byte_64(
  104         addr64_t paddr);
  105 
  106 /* Read physical address half word */
  107 unsigned int ml_phys_read_half(
  108         vm_offset_t paddr);
  109 unsigned int ml_phys_read_half_64(
  110         addr64_t paddr);
  111 
  112 /* Read physical address word*/
  113 unsigned int ml_phys_read(
  114         vm_offset_t paddr);
  115 unsigned int ml_phys_read_64(
  116         addr64_t paddr);
  117 unsigned int ml_phys_read_word(
  118         vm_offset_t paddr);
  119 unsigned int ml_phys_read_word_64(
  120         addr64_t paddr);
  121 
  122 /* Read physical address double word */
  123 unsigned long long ml_phys_read_double(
  124         vm_offset_t paddr);
  125 unsigned long long ml_phys_read_double_64(
  126         addr64_t paddr);
  127 
  128 /* Write physical address byte */
  129 void ml_phys_write_byte(
  130         vm_offset_t paddr, unsigned int data);
  131 void ml_phys_write_byte_64(
  132         addr64_t paddr, unsigned int data);
  133 
  134 /* Write physical address half word */
  135 void ml_phys_write_half(
  136         vm_offset_t paddr, unsigned int data);
  137 void ml_phys_write_half_64(
  138         addr64_t paddr, unsigned int data);
  139 
  140 /* Write physical address word */
  141 void ml_phys_write(
  142         vm_offset_t paddr, unsigned int data);
  143 void ml_phys_write_64(
  144         addr64_t paddr, unsigned int data);
  145 void ml_phys_write_word(
  146         vm_offset_t paddr, unsigned int data);
  147 void ml_phys_write_word_64(
  148         addr64_t paddr, unsigned int data);
  149 
  150 /* Write physical address double word */
  151 void ml_phys_write_double(
  152         vm_offset_t paddr, unsigned long long data);
  153 void ml_phys_write_double_64(
  154         addr64_t paddr, unsigned long long data);
  155 
  156 /* Struct for ml_processor_register */
  157 struct ml_processor_info {
  158         cpu_id_t                        cpu_id;
  159         boolean_t                       boot_cpu;
  160         vm_offset_t                     start_paddr;
  161         boolean_t                       supports_nap;
  162         unsigned long           l2cr_value;
  163         time_base_enable_t      time_base_enable;
  164 };
  165 
  166 typedef struct ml_processor_info ml_processor_info_t;
  167 
  168 /* Register a processor */
  169 kern_return_t ml_processor_register(
  170         ml_processor_info_t *processor_info,
  171         processor_t *processor,
  172         ipi_handler_t *ipi_handler);
  173 
  174 /* Zero bytes starting at a physical address */
  175 void bzero_phys(
  176         addr64_t phys_address,
  177         uint32_t length);
  178 
  179 #endif /* __APPLE_API_UNSTABLE */
  180 
  181 #ifdef  __APPLE_API_PRIVATE
  182 #if     defined(PEXPERT_KERNEL_PRIVATE) || defined(MACH_KERNEL_PRIVATE)
  183 /* IO memory map services */
  184 
  185 /* Map memory map IO space */
  186 vm_offset_t ml_io_map(
  187         vm_offset_t phys_addr, 
  188         vm_size_t size);
  189 
  190 /* boot memory allocation */
  191 vm_offset_t ml_static_malloc(
  192         vm_size_t size);
  193 
  194 #endif /* PEXPERT_KERNEL_PRIVATE || MACH_KERNEL_PRIVATE */
  195 
  196 #ifdef  MACH_KERNEL_PRIVATE
  197 void    ml_init_interrupt(void);
  198 
  199 boolean_t fake_get_interrupts_enabled(void);
  200 
  201 boolean_t fake_set_interrupts_enabled(
  202         boolean_t enable);
  203 
  204 void machine_idle(void);
  205 
  206 void machine_signal_idle(
  207         processor_t processor);
  208 
  209 void cacheInit(void);
  210 
  211 void cacheDisable(void);
  212 
  213 void ml_thrm_init(void);
  214 unsigned int ml_read_temp(void);
  215 
  216 void ml_thrm_set(       
  217         unsigned int low, 
  218         unsigned int high);
  219 
  220 unsigned int ml_throttle(
  221         unsigned int);
  222 
  223 #endif /* MACH_KERNEL_PRIVATE */
  224 
  225 void ml_thread_policy(
  226         thread_t thread,
  227         unsigned policy_id,
  228         unsigned policy_info);
  229 
  230 #define MACHINE_GROUP                           0x00000001
  231 #define MACHINE_NETWORK_GROUP           0x10000000 
  232 #define MACHINE_NETWORK_WORKLOOP        0x00000001
  233 #define MACHINE_NETWORK_NETISR          0x00000002
  234 
  235 /* Initialize the maximum number of CPUs */
  236 void ml_init_max_cpus(
  237         unsigned long max_cpus);
  238 
  239 /* Return the maximum number of CPUs set by ml_init_max_cpus() */
  240 int ml_get_max_cpus(
  241         void);
  242 
  243 /* Return the current number of CPUs */
  244 int ml_get_current_cpus(
  245         void);
  246 
  247 /* Struct for ml_cpu_get_info */
  248 struct ml_cpu_info {
  249         unsigned long           vector_unit;
  250         unsigned long           cache_line_size;
  251         unsigned long           l1_icache_size;
  252         unsigned long           l1_dcache_size;
  253         unsigned long           l2_settings;
  254         unsigned long           l2_cache_size;
  255         unsigned long           l3_settings;
  256         unsigned long           l3_cache_size;
  257 };
  258 
  259 typedef struct ml_cpu_info ml_cpu_info_t;
  260 
  261 /* Get processor info */
  262 void ml_cpu_get_info(ml_cpu_info_t *cpu_info);
  263 
  264 void ml_set_processor_speed(unsigned long speed);
  265 void ml_set_processor_voltage(unsigned long voltage);
  266 
  267 #endif /* __APPLE_API_PRIVATE */
  268 
  269 #endif /* _PPC_MACHINE_ROUTINES_H_ */

Cache object: dc9d46106eea5ffed7cf55fdd28ac97f


[ 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.