addrmap LAPIC {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="LocalAPICId";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } Local_APIC_ID[31:24];
    } LocalAPICId @ 0x20;
    reg {
        name="LocalAPICVersion";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=8'b10000;
            } Local_APIC_Version[7:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=8'b11;
            } Max_LVT_Entry[23:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOI_Broadcast_Suppression_Support[24:24];
    } LocalAPICVersion @ 0x30;
    reg {
        name="TaskPriority";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } Task_Priority_Subclass[3:0];
            field {
                sw = rw;
            } Task_Priority_Class[7:4];
    } TaskPriority @ 0x80;
    reg {
        name="ArbitrationPriority";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Arbitration_Priority_Subclass[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Arbitration_Priority_Class[7:4];
    } ArbitrationPriority @ 0x90;
    reg {
        name="ProcessorPriority";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } No_name_2[3:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } No_name_1_[7:4];
    } ProcessorPriority @ 0xa0;
    reg {
        name="EndOfInterrupt";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } Send_EOI_Signal[31:0];
    } EndOfInterrupt @ 0xb0;
    reg {
        name="RemoteRead";
        regwidth=0x20;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[31:0];
    } RemoteRead @ 0xc0;
    reg {
        name="LogicalDestination";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } Logical_APIC_ID[31:0];
    } LogicalDestination @ 0xd0;
    reg {
        name="DestinationFormat";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
                reset=4'b1111;
            } Model[31:28];
    } DestinationFormat @ 0xe0;
    reg {
        name="SpuriousInterrupt";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=8'b11111111;
            } Spurious_Interrupt_Vector[7:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } APIC_Software_Enable_Disable[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Focus_Processor_Checking[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOI_Broadcast_Suppression[12:12];
    } SpuriousInterrupt @ 0xf0;
    reg {
        name="InService0";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService0 @ 0x100;
    reg {
        name="InService1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService1 @ 0x110;
    reg {
        name="InService2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService2 @ 0x120;
    reg {
        name="InService3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService3 @ 0x130;
    reg {
        name="InService4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService4 @ 0x140;
    reg {
        name="InService5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService5 @ 0x150;
    reg {
        name="InService6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService6 @ 0x160;
    reg {
        name="InService7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InService7 @ 0x170;
    reg {
        name="TriggerMode0";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode0 @ 0x180;
    reg {
        name="TriggerMode1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode1 @ 0x190;
    reg {
        name="TriggerMode2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode2 @ 0x1a0;
    reg {
        name="TriggerMode3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode3 @ 0x1b0;
    reg {
        name="TriggerMode4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode4 @ 0x1c0;
    reg {
        name="TriggerMode5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode5 @ 0x1d0;
    reg {
        name="TriggerMode6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode6 @ 0x1e0;
    reg {
        name="TriggerMode7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } TriggerMode7 @ 0x1f0;
    reg {
        name="InterruptRequest0";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest0 @ 0x200;
    reg {
        name="InterruptRequest1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest1 @ 0x210;
    reg {
        name="InterruptRequest2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest2 @ 0x220;
    reg {
        name="InterruptRequest3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest3 @ 0x230;
    reg {
        name="InterruptRequest4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest4 @ 0x240;
    reg {
        name="InterruptRequest5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest5 @ 0x250;
    reg {
        name="InterruptRequest6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest6 @ 0x260;
    reg {
        name="InterruptRequest7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } InterruptRequest7 @ 0x270;
    reg {
        name="ErrorStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Send_Illegal_Vector[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Receive_Illegal_Vector[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Illegal_Register_Access[7:7];
    } ErrorStatus @ 0x280;
    reg {
        name="LocalVectorTableCMCI";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_Mode[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Masked[16:16];
    } LocalVectorTableCMCI @ 0x2f0;
    reg {
        name="InterruptCommandLo";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } Vector[7:0];
            field {
                sw = rw;
            } Delivery_Mode[10:8];
            field {
                sw = rw;
            } Destination_Mode[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_Status[12:12];
            field {
                sw = rw;
            } Level[14:14];
            field {
                sw = rw;
            } Trigger_Mode[15:15];
            field {
                sw = rw;
            } Destination_Shorthand[19:18];
    } InterruptCommandLo @ 0x300;
    reg {
        name="InterruptCommandHi";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Destination_Field[31:0];
    } InterruptCommandHi @ 0x310;
    reg {
        name="LocalVectorTableTimer";
        regwidth=0x20;
            field {
                sw = rw;
            } Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
            } Timer_Mode[18:17];
    } LocalVectorTableTimer @ 0x320;
    reg {
        name="LocalVectorTableThermal";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_Mode[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
    } LocalVectorTableThermal @ 0x330;
    reg {
        name="LocalVectorTablePerformanceMonitorCounters";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_Mode[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
    } LocalVectorTablePerformanceMonitorCounters @ 0x340;
    reg {
        name="LocalVectorTableLINT0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_mode[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Interrupt_Input_Pin_Polarity[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Remote_IRR[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Level_triggered[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
    } LocalVectorTableLINT0 @ 0x350;
    reg {
        name="LocalVectorTableLINT1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Interrupt_Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_mode[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Interrupt_Input_Pin_Polarity[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Remote_IRR[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Level_triggered[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
    } LocalVectorTableLINT1 @ 0x360;
    reg {
        name="LocalVectorTableError";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Interrupt_Vector[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Delivery_status[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } Masked[16:16];
    } LocalVectorTableError @ 0x370;
    reg {
        name="LocalVectorTableTimerInitialCount";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Initial_Count_Value[31:0];
    } LocalVectorTableTimerInitialCount @ 0x380;
    reg {
        name="LocalVectorTableTimerCurrentCount";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } Current_Count_Value[31:0];
    } LocalVectorTableTimerCurrentCount @ 0x390;
    reg {
        name="LocalVectorTableTimerDivideConfig";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Divide_Value[3:0];
    } LocalVectorTableTimerDivideConfig @ 0x3e0;
} Registers_addrmap;


};