mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-23 05:57:33 +00:00
hv[v2]: Remove deprecated term in vPIC submodule
This patch cleanup below deprecated terms: 'master' -> 'primary' 'slave' -> 'secondary' v2 update: Refine comments. Tracked-On: #5249 Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
This commit is contained in:
parent
d55813e80b
commit
c03623f3fb
@ -680,7 +680,7 @@ int32_t ptirq_intx_pin_remap(struct acrn_vm *vm, uint32_t virt_gsi, enum intx_ct
|
|||||||
DEFINE_INTX_SID(alt_virt_sid, virt_gsi, vgsi_ctlr);
|
DEFINE_INTX_SID(alt_virt_sid, virt_gsi, vgsi_ctlr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* virt pin could come from vpic master, vpic slave or vioapic
|
* virt pin could come from primary vPIC, secondary vPIC or vIOAPIC
|
||||||
* while phys pin is always means for physical IOAPIC.
|
* while phys pin is always means for physical IOAPIC.
|
||||||
*
|
*
|
||||||
* Device Model should pre-hold the mapping entries by calling
|
* Device Model should pre-hold the mapping entries by calling
|
||||||
|
@ -48,7 +48,7 @@ struct acrn_vpic *vm_pic(const struct acrn_vm *vm)
|
|||||||
return (struct acrn_vpic *)&(vm->arch_vm.vpic);
|
return (struct acrn_vpic *)&(vm->arch_vm.vpic);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool master_pic(const struct acrn_vpic *vpic, const struct i8259_reg_state *i8259)
|
static inline bool primary_pic(const struct acrn_vpic *vpic, const struct i8259_reg_state *i8259)
|
||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
@ -98,8 +98,8 @@ static inline uint32_t vpic_get_highest_irrpin(const struct i8259_reg_state *i82
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* In 'Special Fully-Nested Mode' when an interrupt request from
|
* In 'Special Fully-Nested Mode' when an interrupt request from
|
||||||
* a slave is in service, the slave is not locked out from the
|
* a secondary PIC is in service, the secondary PIC is not locked out from the
|
||||||
* master's priority logic.
|
* primary PIC's priority logic.
|
||||||
*/
|
*/
|
||||||
serviced = i8259->service;
|
serviced = i8259->service;
|
||||||
if (i8259->sfn) {
|
if (i8259->sfn) {
|
||||||
@ -150,29 +150,29 @@ static void vpic_notify_intr(struct acrn_vpic *vpic)
|
|||||||
uint32_t pin;
|
uint32_t pin;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First check the slave.
|
* First check the secondary vPIC.
|
||||||
*/
|
*/
|
||||||
i8259 = &vpic->i8259[1];
|
i8259 = &vpic->i8259[1];
|
||||||
pin = vpic_get_highest_irrpin(i8259);
|
pin = vpic_get_highest_irrpin(i8259);
|
||||||
if (!i8259->intr_raised && (pin < NR_VPIC_PINS_PER_CHIP)) {
|
if (!i8259->intr_raised && (pin < NR_VPIC_PINS_PER_CHIP)) {
|
||||||
dev_dbg(DBG_LEVEL_PIC,
|
dev_dbg(DBG_LEVEL_PIC,
|
||||||
"pic slave notify pin = %hhu (imr 0x%x irr 0x%x isr 0x%x)\n",
|
"Secondary vPIC notify pin = %hhu (imr 0x%x irr 0x%x isr 0x%x)\n",
|
||||||
pin, i8259->mask, i8259->request, i8259->service);
|
pin, i8259->mask, i8259->request, i8259->service);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cascade the request from the slave to the master.
|
* Cascade the request from the secondary to the primary vPIC.
|
||||||
*/
|
*/
|
||||||
i8259->intr_raised = true;
|
i8259->intr_raised = true;
|
||||||
vpic_set_pinstate(vpic, 2U, 1U);
|
vpic_set_pinstate(vpic, 2U, 1U);
|
||||||
vpic_set_pinstate(vpic, 2U, 0U);
|
vpic_set_pinstate(vpic, 2U, 0U);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(DBG_LEVEL_PIC,
|
dev_dbg(DBG_LEVEL_PIC,
|
||||||
"pic slave no eligible interrupt (imr 0x%x irr 0x%x isr 0x%x)",
|
"Secondary vPIC no eligible interrupt (imr 0x%x irr 0x%x isr 0x%x)",
|
||||||
i8259->mask, i8259->request, i8259->service);
|
i8259->mask, i8259->request, i8259->service);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Then check the master.
|
* Then check the primary vPIC.
|
||||||
*/
|
*/
|
||||||
i8259 = &vpic->i8259[0];
|
i8259 = &vpic->i8259[0];
|
||||||
pin = vpic_get_highest_irrpin(i8259);
|
pin = vpic_get_highest_irrpin(i8259);
|
||||||
@ -180,7 +180,7 @@ static void vpic_notify_intr(struct acrn_vpic *vpic)
|
|||||||
struct acrn_vm *vm = vpic2vm(vpic);
|
struct acrn_vm *vm = vpic2vm(vpic);
|
||||||
|
|
||||||
dev_dbg(DBG_LEVEL_PIC,
|
dev_dbg(DBG_LEVEL_PIC,
|
||||||
"pic master notify pin = %hhu (imr 0x%x irr 0x%x isr 0x%x)\n",
|
"Primary PIC notify pin = %hhu (imr 0x%x irr 0x%x isr 0x%x)\n",
|
||||||
pin, i8259->mask, i8259->request, i8259->service);
|
pin, i8259->mask, i8259->request, i8259->service);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -219,7 +219,7 @@ static void vpic_notify_intr(struct acrn_vpic *vpic)
|
|||||||
*/
|
*/
|
||||||
(void)vlapic_set_local_intr(vm, BROADCAST_CPU_ID, APIC_LVT_LINT0);
|
(void)vlapic_set_local_intr(vm, BROADCAST_CPU_ID, APIC_LVT_LINT0);
|
||||||
/* notify vioapic pin0 if existing
|
/* notify vioapic pin0 if existing
|
||||||
* For vPIC + vIOAPIC mode, vpic master irq connected
|
* For vPIC + vIOAPIC mode, primary vPIC irq connected
|
||||||
* to vioapic pin0 (irq2)
|
* to vioapic pin0 (irq2)
|
||||||
* From MPSpec session 5.1
|
* From MPSpec session 5.1
|
||||||
*/
|
*/
|
||||||
@ -227,7 +227,7 @@ static void vpic_notify_intr(struct acrn_vpic *vpic)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(DBG_LEVEL_PIC,
|
dev_dbg(DBG_LEVEL_PIC,
|
||||||
"pic master no eligible interrupt (imr 0x%x irr 0x%x isr 0x%x)",
|
"Primary vPIC has no eligible interrupt (imr 0x%x irr 0x%x isr 0x%x)",
|
||||||
i8259->mask, i8259->request, i8259->service);
|
i8259->mask, i8259->request, i8259->service);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -298,11 +298,11 @@ static int32_t vpic_icw4(const struct acrn_vpic *vpic, struct i8259_reg_state *i
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((val & ICW4_SFNM) != 0U) {
|
if ((val & ICW4_SFNM) != 0U) {
|
||||||
if (master_pic(vpic, i8259)) {
|
if (primary_pic(vpic, i8259)) {
|
||||||
i8259->sfn = true;
|
i8259->sfn = true;
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(DBG_LEVEL_PIC,
|
dev_dbg(DBG_LEVEL_PIC,
|
||||||
"Ignoring special fully nested mode on slave pic: %#x",
|
"Ignoring special fully nested mode on secondary pic: %#x",
|
||||||
val);
|
val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -410,15 +410,15 @@ static int32_t vpic_ocw1(const struct acrn_vpic *vpic, struct i8259_reg_state *i
|
|||||||
uint32_t virt_pin;
|
uint32_t virt_pin;
|
||||||
uint32_t vgsi;
|
uint32_t vgsi;
|
||||||
|
|
||||||
/* master i8259 pin2 connect with slave i8259,
|
/* Primary i8259 pin2 connect with secondary i8259,
|
||||||
* not device, so not need pt remap
|
* not device, so not need pt remap
|
||||||
*/
|
*/
|
||||||
if ((pin == 2U) && master_pic(vpic, i8259)) {
|
if ((pin == 2U) && primary_pic(vpic, i8259)) {
|
||||||
pin = (pin + 1U) & 0x7U;
|
pin = (pin + 1U) & 0x7U;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
virt_pin = (master_pic(vpic, i8259)) ?
|
virt_pin = (primary_pic(vpic, i8259)) ?
|
||||||
pin : (pin + 8U);
|
pin : (pin + 8U);
|
||||||
|
|
||||||
vgsi = vpin_to_vgsi(vm, virt_pin);
|
vgsi = vpin_to_vgsi(vm, virt_pin);
|
||||||
@ -460,7 +460,7 @@ static int32_t vpic_ocw2(const struct acrn_vpic *vpic, struct i8259_reg_state *i
|
|||||||
|
|
||||||
/* if level ack PTDEV */
|
/* if level ack PTDEV */
|
||||||
if ((i8259->elc & (1U << (isr_bit & 0x7U))) != 0U) {
|
if ((i8259->elc & (1U << (isr_bit & 0x7U))) != 0U) {
|
||||||
vgsi = vpin_to_vgsi(vm, (master_pic(vpic, i8259) ? isr_bit : isr_bit + 8U));
|
vgsi = vpin_to_vgsi(vm, (primary_pic(vpic, i8259) ? isr_bit : isr_bit + 8U));
|
||||||
ptirq_intx_ack(vm, vgsi, INTX_CTLR_PIC);
|
ptirq_intx_ack(vm, vgsi, INTX_CTLR_PIC);
|
||||||
}
|
}
|
||||||
} else if (((val & OCW2_SL) != 0U) && i8259->rotate) {
|
} else if (((val & OCW2_SL) != 0U) && i8259->rotate) {
|
||||||
@ -480,7 +480,7 @@ static int32_t vpic_ocw3(const struct acrn_vpic *vpic, struct i8259_reg_state *i
|
|||||||
if ((val & OCW3_ESMM) != 0U) {
|
if ((val & OCW3_ESMM) != 0U) {
|
||||||
i8259->smm = ((val & OCW3_SMM) != 0U) ? 1U : 0U;
|
i8259->smm = ((val & OCW3_SMM) != 0U) ? 1U : 0U;
|
||||||
dev_dbg(DBG_LEVEL_PIC, "%s i8259 special mask mode %s\n",
|
dev_dbg(DBG_LEVEL_PIC, "%s i8259 special mask mode %s\n",
|
||||||
master_pic(vpic, i8259) ? "master" : "slave",
|
primary_pic(vpic, i8259) ? "primary vPIC" : "secondary vPIC",
|
||||||
(i8259->smm != 0U) ? "enabled" : "disabled");
|
(i8259->smm != 0U) ? "enabled" : "disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -686,7 +686,7 @@ void vpic_intr_accepted(struct acrn_vpic *vpic, uint32_t vector)
|
|||||||
if ((vector & ~0x7U) == vpic->i8259[1].irq_base) {
|
if ((vector & ~0x7U) == vpic->i8259[1].irq_base) {
|
||||||
vpic_pin_accepted(&vpic->i8259[1], pin);
|
vpic_pin_accepted(&vpic->i8259[1], pin);
|
||||||
/*
|
/*
|
||||||
* If this vector originated from the slave,
|
* If this vector originated from the secondary vPIC,
|
||||||
* accept the cascaded interrupt too.
|
* accept the cascaded interrupt too.
|
||||||
*/
|
*/
|
||||||
vpic_pin_accepted(&vpic->i8259[0], 2U);
|
vpic_pin_accepted(&vpic->i8259[0], 2U);
|
||||||
@ -786,7 +786,7 @@ static int32_t vpic_write(struct acrn_vpic *vpic, struct i8259_reg_state *i8259,
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t vpic_master_handler(struct acrn_vpic *vpic, bool in, uint16_t port,
|
static int32_t vpic_primary_handler(struct acrn_vpic *vpic, bool in, uint16_t port,
|
||||||
size_t bytes, uint32_t *eax)
|
size_t bytes, uint32_t *eax)
|
||||||
{
|
{
|
||||||
struct i8259_reg_state *i8259;
|
struct i8259_reg_state *i8259;
|
||||||
@ -809,12 +809,12 @@ static int32_t vpic_master_handler(struct acrn_vpic *vpic, bool in, uint16_t por
|
|||||||
* @pre vcpu != NULL
|
* @pre vcpu != NULL
|
||||||
* @pre vcpu->vm != NULL
|
* @pre vcpu->vm != NULL
|
||||||
*/
|
*/
|
||||||
static bool vpic_master_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t width)
|
static bool vpic_primary_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t width)
|
||||||
{
|
{
|
||||||
struct pio_request *pio_req = &vcpu->req.reqs.pio;
|
struct pio_request *pio_req = &vcpu->req.reqs.pio;
|
||||||
|
|
||||||
if (vpic_master_handler(vm_pic(vcpu->vm), true, addr, width, &pio_req->value) < 0) {
|
if (vpic_primary_handler(vm_pic(vcpu->vm), true, addr, width, &pio_req->value) < 0) {
|
||||||
pr_err("pic master read port 0x%x width=%d failed\n",
|
pr_err("Primary vPIC read port 0x%x width=%d failed\n",
|
||||||
addr, width);
|
addr, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -825,12 +825,12 @@ static bool vpic_master_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t wi
|
|||||||
* @pre vcpu != NULL
|
* @pre vcpu != NULL
|
||||||
* @pre vcpu->vm != NULL
|
* @pre vcpu->vm != NULL
|
||||||
*/
|
*/
|
||||||
static bool vpic_master_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t width,
|
static bool vpic_primary_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t width,
|
||||||
uint32_t v)
|
uint32_t v)
|
||||||
{
|
{
|
||||||
uint32_t val = v;
|
uint32_t val = v;
|
||||||
|
|
||||||
if (vpic_master_handler(vm_pic(vcpu->vm), false, addr, width, &val) < 0) {
|
if (vpic_primary_handler(vm_pic(vcpu->vm), false, addr, width, &val) < 0) {
|
||||||
pr_err("%s: write port 0x%x width=%d value 0x%x failed\n",
|
pr_err("%s: write port 0x%x width=%d value 0x%x failed\n",
|
||||||
__func__, addr, width, val);
|
__func__, addr, width, val);
|
||||||
}
|
}
|
||||||
@ -838,7 +838,7 @@ static bool vpic_master_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t w
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t vpic_slave_handler(struct acrn_vpic *vpic, bool in, uint16_t port,
|
static int32_t vpic_secondary_handler(struct acrn_vpic *vpic, bool in, uint16_t port,
|
||||||
size_t bytes, uint32_t *eax)
|
size_t bytes, uint32_t *eax)
|
||||||
{
|
{
|
||||||
struct i8259_reg_state *i8259;
|
struct i8259_reg_state *i8259;
|
||||||
@ -861,12 +861,12 @@ static int32_t vpic_slave_handler(struct acrn_vpic *vpic, bool in, uint16_t port
|
|||||||
* @pre vcpu != NULL
|
* @pre vcpu != NULL
|
||||||
* @pre vcpu->vm != NULL
|
* @pre vcpu->vm != NULL
|
||||||
*/
|
*/
|
||||||
static bool vpic_slave_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t width)
|
static bool vpic_secondary_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t width)
|
||||||
{
|
{
|
||||||
struct pio_request *pio_req = &vcpu->req.reqs.pio;
|
struct pio_request *pio_req = &vcpu->req.reqs.pio;
|
||||||
|
|
||||||
if (vpic_slave_handler(vm_pic(vcpu->vm), true, addr, width, &pio_req->value) < 0) {
|
if (vpic_secondary_handler(vm_pic(vcpu->vm), true, addr, width, &pio_req->value) < 0) {
|
||||||
pr_err("pic slave read port 0x%x width=%d failed\n",
|
pr_err("Secondary vPIC read port 0x%x width=%d failed\n",
|
||||||
addr, width);
|
addr, width);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -876,12 +876,12 @@ static bool vpic_slave_io_read(struct acrn_vcpu *vcpu, uint16_t addr, size_t wid
|
|||||||
* @pre vcpu != NULL
|
* @pre vcpu != NULL
|
||||||
* @pre vcpu->vm != NULL
|
* @pre vcpu->vm != NULL
|
||||||
*/
|
*/
|
||||||
static bool vpic_slave_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t width,
|
static bool vpic_secondary_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t width,
|
||||||
uint32_t v)
|
uint32_t v)
|
||||||
{
|
{
|
||||||
uint32_t val = v;
|
uint32_t val = v;
|
||||||
|
|
||||||
if (vpic_slave_handler(vm_pic(vcpu->vm), false, addr, width, &val) < 0) {
|
if (vpic_secondary_handler(vm_pic(vcpu->vm), false, addr, width, &val) < 0) {
|
||||||
pr_err("%s: write port 0x%x width=%d value 0x%x failed\n",
|
pr_err("%s: write port 0x%x width=%d value 0x%x failed\n",
|
||||||
__func__, addr, width, val);
|
__func__, addr, width, val);
|
||||||
}
|
}
|
||||||
@ -892,10 +892,10 @@ static bool vpic_slave_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t wi
|
|||||||
static int32_t vpic_elc_handler(struct acrn_vpic *vpic, bool in, uint16_t port, size_t bytes,
|
static int32_t vpic_elc_handler(struct acrn_vpic *vpic, bool in, uint16_t port, size_t bytes,
|
||||||
uint32_t *eax)
|
uint32_t *eax)
|
||||||
{
|
{
|
||||||
bool is_master;
|
bool is_primary_vpic;
|
||||||
int32_t ret;
|
int32_t ret;
|
||||||
|
|
||||||
is_master = (port == IO_ELCR1);
|
is_primary_vpic = (port == IO_ELCR1);
|
||||||
|
|
||||||
if (bytes == 1U) {
|
if (bytes == 1U) {
|
||||||
uint64_t rflags;
|
uint64_t rflags;
|
||||||
@ -903,23 +903,23 @@ static int32_t vpic_elc_handler(struct acrn_vpic *vpic, bool in, uint16_t port,
|
|||||||
spinlock_irqsave_obtain(&(vpic->lock), &rflags);
|
spinlock_irqsave_obtain(&(vpic->lock), &rflags);
|
||||||
|
|
||||||
if (in) {
|
if (in) {
|
||||||
if (is_master) {
|
if (is_primary_vpic) {
|
||||||
*eax = vpic->i8259[0].elc;
|
*eax = vpic->i8259[0].elc;
|
||||||
} else {
|
} else {
|
||||||
*eax = vpic->i8259[1].elc;
|
*eax = vpic->i8259[1].elc;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* For the master PIC the cascade channel (IRQ2), the
|
* For the primary vPIC the cascade channel (IRQ2), the
|
||||||
* heart beat timer (IRQ0), and the keyboard
|
* heart beat timer (IRQ0), and the keyboard
|
||||||
* controller (IRQ1) cannot be programmed for level
|
* controller (IRQ1) cannot be programmed for level
|
||||||
* mode.
|
* mode.
|
||||||
*
|
*
|
||||||
* For the slave PIC the real time clock (IRQ8) and
|
* For the secondary vPIC the real time clock (IRQ8) and
|
||||||
* the floating point error interrupt (IRQ13) cannot
|
* the floating point error interrupt (IRQ13) cannot
|
||||||
* be programmed for level mode.
|
* be programmed for level mode.
|
||||||
*/
|
*/
|
||||||
if (is_master) {
|
if (is_primary_vpic) {
|
||||||
vpic->i8259[0].elc = (uint8_t)(*eax & 0xf8U);
|
vpic->i8259[0].elc = (uint8_t)(*eax & 0xf8U);
|
||||||
} else {
|
} else {
|
||||||
vpic->i8259[1].elc = (uint8_t)(*eax & 0xdeU);
|
vpic->i8259[1].elc = (uint8_t)(*eax & 0xdeU);
|
||||||
@ -969,11 +969,11 @@ static bool vpic_elc_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t widt
|
|||||||
|
|
||||||
static void vpic_register_io_handler(struct acrn_vm *vm)
|
static void vpic_register_io_handler(struct acrn_vm *vm)
|
||||||
{
|
{
|
||||||
struct vm_io_range master_range = {
|
struct vm_io_range primary_vPIC_range = {
|
||||||
.base = 0x20U,
|
.base = 0x20U,
|
||||||
.len = 2U
|
.len = 2U
|
||||||
};
|
};
|
||||||
struct vm_io_range slave_range = {
|
struct vm_io_range secondary_vPIC_range = {
|
||||||
.base = 0xa0U,
|
.base = 0xa0U,
|
||||||
.len = 2U
|
.len = 2U
|
||||||
};
|
};
|
||||||
@ -982,10 +982,10 @@ static void vpic_register_io_handler(struct acrn_vm *vm)
|
|||||||
.len = 2U
|
.len = 2U
|
||||||
};
|
};
|
||||||
|
|
||||||
register_pio_emulation_handler(vm, PIC_MASTER_PIO_IDX, &master_range,
|
register_pio_emulation_handler(vm, PIC_PRIMARY_PIO_IDX, &primary_vPIC_range,
|
||||||
vpic_master_io_read, vpic_master_io_write);
|
vpic_primary_io_read, vpic_primary_io_write);
|
||||||
register_pio_emulation_handler(vm, PIC_SLAVE_PIO_IDX, &slave_range,
|
register_pio_emulation_handler(vm, PIC_SECONDARY_PIO_IDX, &secondary_vPIC_range,
|
||||||
vpic_slave_io_read, vpic_slave_io_write);
|
vpic_secondary_io_read, vpic_secondary_io_write);
|
||||||
register_pio_emulation_handler(vm, PIC_ELC_PIO_IDX, &elcr_range,
|
register_pio_emulation_handler(vm, PIC_ELC_PIO_IDX, &elcr_range,
|
||||||
vpic_elc_io_read, vpic_elc_io_write);
|
vpic_elc_io_read, vpic_elc_io_write);
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
|
||||||
/* Define emulated port IO index */
|
/* Define emulated port IO index */
|
||||||
#define PIC_MASTER_PIO_IDX 0U
|
#define PIC_PRIMARY_PIO_IDX 0U
|
||||||
#define PIC_SLAVE_PIO_IDX (PIC_MASTER_PIO_IDX + 1U)
|
#define PIC_SECONDARY_PIO_IDX (PIC_PRIMARY_PIO_IDX + 1U)
|
||||||
#define PIC_ELC_PIO_IDX (PIC_SLAVE_PIO_IDX + 1U)
|
#define PIC_ELC_PIO_IDX (PIC_SECONDARY_PIO_IDX + 1U)
|
||||||
#define PCI_CFGADDR_PIO_IDX (PIC_ELC_PIO_IDX + 1U)
|
#define PCI_CFGADDR_PIO_IDX (PIC_ELC_PIO_IDX + 1U)
|
||||||
#define PCI_CFGDATA_PIO_IDX (PCI_CFGADDR_PIO_IDX + 1U)
|
#define PCI_CFGDATA_PIO_IDX (PCI_CFGADDR_PIO_IDX + 1U)
|
||||||
/* When MAX_VUART_NUM_PER_VM is larger than 2, UART_PIO_IDXn should also be added here */
|
/* When MAX_VUART_NUM_PER_VM is larger than 2, UART_PIO_IDXn should also be added here */
|
||||||
|
@ -51,13 +51,13 @@
|
|||||||
/* No definitions, it is the base vector of the IDT for 8086 mode */
|
/* No definitions, it is the base vector of the IDT for 8086 mode */
|
||||||
|
|
||||||
/* Initialization control word 3. Written to the odd address. */
|
/* Initialization control word 3. Written to the odd address. */
|
||||||
/* For a master PIC, bitfield indicating a slave 8259 on given input */
|
/* For a primary PIC, bitfield indicating a secondary PIC on given input */
|
||||||
/* For slave, lower 3 bits are the slave's ID binary id on master */
|
/* For a secondary PIC, lower 3 bits are the PIC's ID binary id on primary PIC */
|
||||||
|
|
||||||
/* Initialization control word 4. Written to the odd address. */
|
/* Initialization control word 4. Written to the odd address. */
|
||||||
#define ICW4_8086 0x01U /* 1 = 8086, 0 = 8080 */
|
#define ICW4_8086 0x01U /* 1 = 8086, 0 = 8080 */
|
||||||
#define ICW4_AEOI 0x02U /* 1 = Auto EOI */
|
#define ICW4_AEOI 0x02U /* 1 = Auto EOI */
|
||||||
#define ICW4_MS 0x04U /* 1 = buffered master, 0 = slave */
|
#define ICW4_MS 0x04U /* 1 = buffered primary PIC, 0 = secondary PIC*/
|
||||||
#define ICW4_BUF 0x08U /* 1 = enable buffer mode */
|
#define ICW4_BUF 0x08U /* 1 = enable buffer mode */
|
||||||
#define ICW4_SFNM 0x10U /* 1 = special fully nested mode */
|
#define ICW4_SFNM 0x10U /* 1 = special fully nested mode */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user