|
|
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: #include <mach/i386/thread_status.h> ! 23: #include <pexpert/protos.h> ! 24: #include <pexpert/pexpert.h> ! 25: ! 26: struct i386_interrupt_handler { ! 27: IOInterruptHandler handler; ! 28: void *nub; ! 29: void *target; ! 30: void *refCon; ! 31: }; ! 32: ! 33: typedef struct i386_interrupt_handler i386_interrupt_handler_t; ! 34: ! 35: i386_interrupt_handler_t PE_interrupt_handler; ! 36: ! 37: void PE_platform_interrupt_initialize(void) ! 38: { ! 39: } ! 40: ! 41: void ! 42: PE_incoming_interrupt(int interrupt, struct i386_saved_state *ssp) ! 43: { ! 44: boolean_t save_int; ! 45: ! 46: i386_interrupt_handler_t *vector; ! 47: ! 48: vector = &PE_interrupt_handler; ! 49: ! 50: save_int = ml_set_interrupts_enabled(FALSE); ! 51: vector->handler(vector->target, vector->refCon, vector->nub, interrupt); ! 52: ml_set_interrupts_enabled(save_int); ! 53: } ! 54: ! 55: void PE_install_interrupt_handler(void *nub, int source, ! 56: void *target, ! 57: IOInterruptHandler handler, ! 58: void *refCon) ! 59: { ! 60: i386_interrupt_handler_t *vector; ! 61: ! 62: vector = &PE_interrupt_handler; ! 63: ! 64: /*vector->source = source; IGNORED */ ! 65: vector->handler = handler; ! 66: vector->nub = nub; ! 67: vector->target = target; ! 68: vector->refCon = refCon; ! 69: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.