|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * @OSF_COPYRIGHT@
24: */
25:
26: #ifndef _I386_MACHINE_ROUTINES_H_
27: #define _I386_MACHINE_ROUTINES_H_
28:
29: #include <mach/mach_types.h>
30: #include <mach/boolean.h>
31: #include <kern/kern_types.h>
32: #include <pexpert/pexpert.h>
33:
34:
35: #if defined(PEXPERT_KERNEL_PRIVATE) || defined(MACH_KERNEL_PRIVATE)
36: /* IO memory map services */
37:
38: /* Map memory map IO space */
39: vm_offset_t ml_io_map(
40: vm_offset_t phys_addr,
41: vm_size_t size);
42:
43: /* boot memory allocation */
44: vm_offset_t ml_static_malloc(
45: vm_size_t size);
46:
47: #endif
48:
49: vm_offset_t
50: ml_static_ptovirt(
51: vm_offset_t);
52:
53: void ml_static_mfree(
54: vm_offset_t,
55: vm_size_t);
56:
57: /* virtual to physical on wired pages */
58: vm_offset_t ml_vtophys(
59: vm_offset_t vaddr);
60:
61: /* Interrupt handling */
62:
63: /* Get Interrupts Enabled */
64: boolean_t ml_get_interrupts_enabled(void);
65:
66: /* Set Interrupts Enabled */
67: boolean_t ml_set_interrupts_enabled(boolean_t enable);
68:
69: /* Check if running at interrupt context */
70: boolean_t ml_at_interrupt_context(void);
71:
72: /* Generate a fake interrupt */
73: void ml_cause_interrupt(void);
74:
75: /* Initialize Interrupts */
76: void ml_install_interrupt_handler(
77: void *nub,
78: int source,
79: void *target,
80: IOInterruptHandler handler,
81: void *refCon);
82:
83: #ifdef MACH_KERNEL_PRIVATE
84: /* check pending timers */
85: #define machine_clock_assist()
86: #endif
87:
88: /* Type for the IPI Hander */
89: typedef void (*ipi_handler_t)(void);
90:
91: /* Register a processor */
92: kern_return_t ml_processor_register(
93: cpu_id_t cpu_id,
94: vm_offset_t start_paddr,
95: processor_t *processor,
96: ipi_handler_t *ipi_handler,
97: boolean_t boot_cpu);
98:
99: #endif /* _I386_MACHINE_ROUTINES_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.