1# Copyright (c) 2008 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 43 unchanged lines hidden (view full) --- 52 _pic2 = I8259(pio_addr=x86IOAddress(0xA0), mode='I8259Slave') 53 _cmos = Cmos(pio_addr=x86IOAddress(0x70)) 54 _dma1 = I8237(pio_addr=x86IOAddress(0x0)) 55 _keyboard = I8042(data_port=x86IOAddress(0x60), \ 56 command_port=x86IOAddress(0x64)) 57 _pit = I8254(pio_addr=x86IOAddress(0x40)) 58 _speaker = PcSpeaker(pio_addr=x86IOAddress(0x61)) 59 _io_apic = I82094AA(pio_addr=0xFEC00000) |
60 61 pic1 = Param.I8259(_pic1, "Master PIC") 62 pic2 = Param.I8259(_pic2, "Slave PIC") 63 cmos = Param.Cmos(_cmos, "CMOS memory and real time clock device") 64 dma1 = Param.I8237(_dma1, "The first dma controller") 65 keyboard = Param.I8042(_keyboard, "The keyboard controller") 66 pit = Param.I8254(_pit, "Programmable interval timer") 67 speaker = Param.PcSpeaker(_speaker, "PC speaker") 68 io_apic = Param.I82094AA(_io_apic, "I/O APIC") 69 |
70 # IDE controller 71 ide = IdeController(disks=[], pci_func=0, pci_dev=4, pci_bus=0) 72 ide.BAR0 = 0x1f0 73 ide.BAR0LegacyIO = True 74 ide.BAR1 = 0x3f4 75 ide.BAR1Size = '3B' 76 ide.BAR1LegacyIO = True 77 ide.BAR2 = 0x170 --- 4 unchanged lines hidden (view full) --- 82 ide.BAR4 = 1 83 ide.Command = 0 84 ide.ProgIF = 0x80 85 ide.InterruptLine = 14 86 ide.InterruptPin = 1 87 88 def attachIO(self, bus): 89 # Route interupt signals |
90 self.int_lines = \ 91 [X86IntLine(source=self.pic1.output, sink=self.io_apic.pin(0)), 92 X86IntLine(source=self.pic2.output, sink=self.pic1.pin(2)), 93 X86IntLine(source=self.cmos.int_pin, sink=self.pic2.pin(0)), 94 X86IntLine(source=self.pit.int_pin, sink=self.pic1.pin(0)), 95 X86IntLine(source=self.pit.int_pin, sink=self.io_apic.pin(2)), 96 X86IntLine(source=self.keyboard.keyboard_int_pin, 97 sink=self.io_apic.pin(1)), 98 X86IntLine(source=self.keyboard.mouse_int_pin, 99 sink=self.io_apic.pin(12))] |
100 # Tell the devices about each other 101 self.pic1.slave = self.pic2 102 self.speaker.i8254 = self.pit 103 self.io_apic.external_int_pic = self.pic1 104 # Connect to the bus 105 self.cmos.pio = bus.port 106 self.dma1.pio = bus.port 107 self.ide.pio = bus.port 108 self.keyboard.pio = bus.port 109 self.pic1.pio = bus.port 110 self.pic2.pio = bus.port 111 self.pit.pio = bus.port 112 self.speaker.pio = bus.port 113 self.io_apic.pio = bus.port 114 self.io_apic.int_port = bus.port |