addrmap SAM4S_PIO {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="PioEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } PER[31:0];
    } PioEnable @ 0x0;
    reg {
        name="PioDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } PDR[31:0];
    } PioDisable @ 0x4;
    reg {
        name="PioStatus";
        regwidth=0x20;
            field {
                desc = "This field has reset value calculated at runtime.";
                sw = r;
            } PSR[31:0];
    } PioStatus @ 0x8;
    reg {
        name="OutputEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } OER[31:0];
    } OutputEnable @ 0x10;
    reg {
        name="OutputDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } ODR[31:0];
    } OutputDisable @ 0x14;
    reg {
        name="OutputStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } OSR[31:0];
    } OutputStatus @ 0x18;
    reg {
        name="GlitchInputFilterEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFER[31:0];
    } GlitchInputFilterEnable @ 0x20;
    reg {
        name="GlitchInputFilterDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFDR[31:0];
    } GlitchInputFilterDisable @ 0x24;
    reg {
        name="GlitchInputFilterStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFSR[31:0];
    } GlitchInputFilterStatus @ 0x28;
    reg {
        name="SetOutputData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } SODR[31:0];
    } SetOutputData @ 0x30;
    reg {
        name="ClearOutputData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } CODR[31:0];
    } ClearOutputData @ 0x34;
    reg {
        name="OutputDataStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } ODSR[31:0];
    } OutputDataStatus @ 0x38;
    reg {
        name="PinDataStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } PDSR[31:0];
    } PinDataStatus @ 0x3c;
    reg {
        name="InterruptEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } IER[31:0];
    } InterruptEnable @ 0x40;
    reg {
        name="InterruptDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } IDR[31:0];
    } InterruptDisable @ 0x44;
    reg {
        name="InterruptMask";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } IMR[31:0];
    } InterruptMask @ 0x48;
    reg {
        name="InterruptStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ISR[31:0];
    } InterruptStatus @ 0x4c;
    reg {
        name="MultiDriverEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MDER[31:0];
    } MultiDriverEnable @ 0x50;
    reg {
        name="MultiDriverDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MDDR[31:0];
    } MultiDriverDisable @ 0x54;
    reg {
        name="MultiDriverStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MDSR[31:0];
    } MultiDriverStatus @ 0x58;
    reg {
        name="PullUpDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PUDR[31:0];
    } PullUpDisable @ 0x60;
    reg {
        name="PullUpEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PUER[31:0];
    } PullUpEnable @ 0x64;
    reg {
        name="PadPullUpStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PUSR[31:0];
    } PadPullUpStatus @ 0x68;
    reg {
        name="PeripheralSelect1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ABCDSR1[31:0];
    } PeripheralSelect1 @ 0x70;
    reg {
        name="PeripheralSelect2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ABCDSR2[31:0];
    } PeripheralSelect2 @ 0x74;
    reg {
        name="InputFilterSlowClockDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFSCDR[31:0];
    } InputFilterSlowClockDisable @ 0x80;
    reg {
        name="InputFilterSlowClockEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFSCER[31:0];
    } InputFilterSlowClockEnable @ 0x84;
    reg {
        name="InputFilterSlowClockStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IFSCSR[31:0];
    } InputFilterSlowClockStatus @ 0x88;
    reg {
        name="SlowClockDividerDebouncing";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIV[13:0];
    } SlowClockDividerDebouncing @ 0x8c;
    reg {
        name="PadPullDownDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PPDDR[31:0];
    } PadPullDownDisable @ 0x90;
    reg {
        name="PadPullDownEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PPDER[31:0];
    } PadPullDownEnable @ 0x94;
    reg {
        name="PadPullDownStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PPDSR[31:0];
    } PadPullDownStatus @ 0x98;
    reg {
        name="OutputWriteEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } OWER[31:0];
    } OutputWriteEnable @ 0xa0;
    reg {
        name="OutputWriteDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } OWDR[31:0];
    } OutputWriteDisable @ 0xa4;
    reg {
        name="OutputWriteStatus";
        regwidth=0x20;
            field {
                sw = r;
            } OWSR[31:0];
    } OutputWriteStatus @ 0xa8;
    reg {
        name="AdditionalInterruptModesEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } AIMER[31:0];
    } AdditionalInterruptModesEnable @ 0xb0;
    reg {
        name="AdditionalInterruptModesDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } AIMDR[31:0];
    } AdditionalInterruptModesDisable @ 0xb4;
    reg {
        name="AdditionalInterruptModesMask";
        regwidth=0x20;
            field {
                sw = r;
            } AIMMR[31:0];
    } AdditionalInterruptModesMask @ 0xb8;
    reg {
        name="EdgeSelect";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } ESR[31:0];
    } EdgeSelect @ 0xc0;
    reg {
        name="LevelSelect";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } LSR[31:0];
    } LevelSelect @ 0xc4;
    reg {
        name="EdgeLevelStatus";
        regwidth=0x20;
            field {
                sw = r;
            } ELSR[31:0];
    } EdgeLevelStatus @ 0xc8;
    reg {
        name="FallingEdgeLowLevelSelect";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } FELLSR[31:0];
    } FallingEdgeLowLevelSelect @ 0xd0;
    reg {
        name="RisingEdgeHighLevelSelect";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } REHLSR[31:0];
    } RisingEdgeHighLevelSelect @ 0xd4;
    reg {
        name="FallRiseLowHighStatus";
        regwidth=0x20;
            field {
                sw = r;
            } FRLHSR[31:0];
    } FallRiseLowHighStatus @ 0xd8;
    reg {
        name="LockStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LOCKSR[31:0];
    } LockStatus @ 0xe0;
    reg {
        name="WriteProtectionMode";
        regwidth=0x20;
            field {
                sw = rw;
            } WPEN[0:0];
            field {
                sw = rw;
            } WPKEY[31:8];
    } WriteProtectionMode @ 0xe4;
    reg {
        name="WriteProtectionStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WPVS[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WPVSRC[23:8];
    } WriteProtectionStatus @ 0xe8;
    reg {
        name="SchmittTrigger";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCHMITT[31:0];
    } SchmittTrigger @ 0x100;
    reg {
        name="ParallelCaptureMode";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PCEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DSIZE[5:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ALWYS[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HALFS[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FRSTS[11:11];
    } ParallelCaptureMode @ 0x150;
    reg {
        name="ParallelCaptureInterruptEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DRDY[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBUFF[3:3];
    } ParallelCaptureInterruptEnable @ 0x154;
    reg {
        name="ParallelCaptureInterruptDisable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DRDY[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBUFF[3:3];
    } ParallelCaptureInterruptDisable @ 0x158;
    reg {
        name="ParallelCaptureInterruptMask";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DRDY[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBUFF[3:3];
    } ParallelCaptureInterruptMask @ 0x15c;
    reg {
        name="ParallelCaptureInterruptStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DRDY[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBUFF[3:3];
    } ParallelCaptureInterruptStatus @ 0x160;
    reg {
        name="ParallelCaptureReceptionHolding";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RDATA[31:0];
    } ParallelCaptureReceptionHolding @ 0x164;
} Registers_addrmap;


};