Program Listing for File psm.h#

Return to documentation for file (src/generated/structs/psm.h)

#pragma once

#include "../ifgen/common.h"

namespace RP2040
{

struct [[gnu::packed]] psm
{
    /* Constant attributes. */
    static constexpr std::size_t size = 16;
    /* Fields. */
    uint32_t FRCE_ON;
    uint32_t
        FRCE_OFF;
    uint32_t WDSEL;
    const uint32_t DONE = {};
    /* Methods. */

    inline bool get_FRCE_ON_rosc() volatile
    {
        return FRCE_ON & (1u << 0u);
    }

    inline void set_FRCE_ON_rosc() volatile
    {
        FRCE_ON |= 1u << 0u;
    }

    inline void clear_FRCE_ON_rosc() volatile
    {
        FRCE_ON &= ~(1u << 0u);
    }

    inline void toggle_FRCE_ON_rosc() volatile
    {
        FRCE_ON ^= 1u << 0u;
    }

    inline bool get_FRCE_ON_xosc() volatile
    {
        return FRCE_ON & (1u << 1u);
    }

    inline void set_FRCE_ON_xosc() volatile
    {
        FRCE_ON |= 1u << 1u;
    }

    inline void clear_FRCE_ON_xosc() volatile
    {
        FRCE_ON &= ~(1u << 1u);
    }

    inline void toggle_FRCE_ON_xosc() volatile
    {
        FRCE_ON ^= 1u << 1u;
    }

    inline bool get_FRCE_ON_clocks() volatile
    {
        return FRCE_ON & (1u << 2u);
    }

    inline void set_FRCE_ON_clocks() volatile
    {
        FRCE_ON |= 1u << 2u;
    }

    inline void clear_FRCE_ON_clocks() volatile
    {
        FRCE_ON &= ~(1u << 2u);
    }

    inline void toggle_FRCE_ON_clocks() volatile
    {
        FRCE_ON ^= 1u << 2u;
    }

    inline bool get_FRCE_ON_resets() volatile
    {
        return FRCE_ON & (1u << 3u);
    }

    inline void set_FRCE_ON_resets() volatile
    {
        FRCE_ON |= 1u << 3u;
    }

    inline void clear_FRCE_ON_resets() volatile
    {
        FRCE_ON &= ~(1u << 3u);
    }

    inline void toggle_FRCE_ON_resets() volatile
    {
        FRCE_ON ^= 1u << 3u;
    }

    inline bool get_FRCE_ON_busfabric() volatile
    {
        return FRCE_ON & (1u << 4u);
    }

    inline void set_FRCE_ON_busfabric() volatile
    {
        FRCE_ON |= 1u << 4u;
    }

    inline void clear_FRCE_ON_busfabric() volatile
    {
        FRCE_ON &= ~(1u << 4u);
    }

    inline void toggle_FRCE_ON_busfabric() volatile
    {
        FRCE_ON ^= 1u << 4u;
    }

    inline bool get_FRCE_ON_rom() volatile
    {
        return FRCE_ON & (1u << 5u);
    }

    inline void set_FRCE_ON_rom() volatile
    {
        FRCE_ON |= 1u << 5u;
    }

    inline void clear_FRCE_ON_rom() volatile
    {
        FRCE_ON &= ~(1u << 5u);
    }

    inline void toggle_FRCE_ON_rom() volatile
    {
        FRCE_ON ^= 1u << 5u;
    }

    inline bool get_FRCE_ON_sram0() volatile
    {
        return FRCE_ON & (1u << 6u);
    }

    inline void set_FRCE_ON_sram0() volatile
    {
        FRCE_ON |= 1u << 6u;
    }

    inline void clear_FRCE_ON_sram0() volatile
    {
        FRCE_ON &= ~(1u << 6u);
    }

    inline void toggle_FRCE_ON_sram0() volatile
    {
        FRCE_ON ^= 1u << 6u;
    }

    inline bool get_FRCE_ON_sram1() volatile
    {
        return FRCE_ON & (1u << 7u);
    }

    inline void set_FRCE_ON_sram1() volatile
    {
        FRCE_ON |= 1u << 7u;
    }

    inline void clear_FRCE_ON_sram1() volatile
    {
        FRCE_ON &= ~(1u << 7u);
    }

    inline void toggle_FRCE_ON_sram1() volatile
    {
        FRCE_ON ^= 1u << 7u;
    }

    inline bool get_FRCE_ON_sram2() volatile
    {
        return FRCE_ON & (1u << 8u);
    }

    inline void set_FRCE_ON_sram2() volatile
    {
        FRCE_ON |= 1u << 8u;
    }

    inline void clear_FRCE_ON_sram2() volatile
    {
        FRCE_ON &= ~(1u << 8u);
    }

    inline void toggle_FRCE_ON_sram2() volatile
    {
        FRCE_ON ^= 1u << 8u;
    }

    inline bool get_FRCE_ON_sram3() volatile
    {
        return FRCE_ON & (1u << 9u);
    }

    inline void set_FRCE_ON_sram3() volatile
    {
        FRCE_ON |= 1u << 9u;
    }

    inline void clear_FRCE_ON_sram3() volatile
    {
        FRCE_ON &= ~(1u << 9u);
    }

    inline void toggle_FRCE_ON_sram3() volatile
    {
        FRCE_ON ^= 1u << 9u;
    }

    inline bool get_FRCE_ON_sram4() volatile
    {
        return FRCE_ON & (1u << 10u);
    }

    inline void set_FRCE_ON_sram4() volatile
    {
        FRCE_ON |= 1u << 10u;
    }

    inline void clear_FRCE_ON_sram4() volatile
    {
        FRCE_ON &= ~(1u << 10u);
    }

    inline void toggle_FRCE_ON_sram4() volatile
    {
        FRCE_ON ^= 1u << 10u;
    }

    inline bool get_FRCE_ON_sram5() volatile
    {
        return FRCE_ON & (1u << 11u);
    }

    inline void set_FRCE_ON_sram5() volatile
    {
        FRCE_ON |= 1u << 11u;
    }

    inline void clear_FRCE_ON_sram5() volatile
    {
        FRCE_ON &= ~(1u << 11u);
    }

    inline void toggle_FRCE_ON_sram5() volatile
    {
        FRCE_ON ^= 1u << 11u;
    }

    inline bool get_FRCE_ON_xip() volatile
    {
        return FRCE_ON & (1u << 12u);
    }

    inline void set_FRCE_ON_xip() volatile
    {
        FRCE_ON |= 1u << 12u;
    }

    inline void clear_FRCE_ON_xip() volatile
    {
        FRCE_ON &= ~(1u << 12u);
    }

    inline void toggle_FRCE_ON_xip() volatile
    {
        FRCE_ON ^= 1u << 12u;
    }

    inline bool get_FRCE_ON_vreg_and_chip_reset() volatile
    {
        return FRCE_ON & (1u << 13u);
    }

    inline void set_FRCE_ON_vreg_and_chip_reset() volatile
    {
        FRCE_ON |= 1u << 13u;
    }

    inline void clear_FRCE_ON_vreg_and_chip_reset() volatile
    {
        FRCE_ON &= ~(1u << 13u);
    }

    inline void toggle_FRCE_ON_vreg_and_chip_reset() volatile
    {
        FRCE_ON ^= 1u << 13u;
    }

    inline bool get_FRCE_ON_sio() volatile
    {
        return FRCE_ON & (1u << 14u);
    }

    inline void set_FRCE_ON_sio() volatile
    {
        FRCE_ON |= 1u << 14u;
    }

    inline void clear_FRCE_ON_sio() volatile
    {
        FRCE_ON &= ~(1u << 14u);
    }

    inline void toggle_FRCE_ON_sio() volatile
    {
        FRCE_ON ^= 1u << 14u;
    }

    inline bool get_FRCE_ON_proc0() volatile
    {
        return FRCE_ON & (1u << 15u);
    }

    inline void set_FRCE_ON_proc0() volatile
    {
        FRCE_ON |= 1u << 15u;
    }

    inline void clear_FRCE_ON_proc0() volatile
    {
        FRCE_ON &= ~(1u << 15u);
    }

    inline void toggle_FRCE_ON_proc0() volatile
    {
        FRCE_ON ^= 1u << 15u;
    }

    inline bool get_FRCE_ON_proc1() volatile
    {
        return FRCE_ON & (1u << 16u);
    }

    inline void set_FRCE_ON_proc1() volatile
    {
        FRCE_ON |= 1u << 16u;
    }

    inline void clear_FRCE_ON_proc1() volatile
    {
        FRCE_ON &= ~(1u << 16u);
    }

    inline void toggle_FRCE_ON_proc1() volatile
    {
        FRCE_ON ^= 1u << 16u;
    }

    inline void get_FRCE_ON(bool &rosc, bool &xosc, bool &clocks, bool &resets,
                            bool &busfabric, bool &rom, bool &sram0,
                            bool &sram1, bool &sram2, bool &sram3, bool &sram4,
                            bool &sram5, bool &xip, bool &vreg_and_chip_reset,
                            bool &sio, bool &proc0, bool &proc1) volatile
    {
        uint32_t curr = FRCE_ON;

        rosc = curr & (1u << 0u);
        xosc = curr & (1u << 1u);
        clocks = curr & (1u << 2u);
        resets = curr & (1u << 3u);
        busfabric = curr & (1u << 4u);
        rom = curr & (1u << 5u);
        sram0 = curr & (1u << 6u);
        sram1 = curr & (1u << 7u);
        sram2 = curr & (1u << 8u);
        sram3 = curr & (1u << 9u);
        sram4 = curr & (1u << 10u);
        sram5 = curr & (1u << 11u);
        xip = curr & (1u << 12u);
        vreg_and_chip_reset = curr & (1u << 13u);
        sio = curr & (1u << 14u);
        proc0 = curr & (1u << 15u);
        proc1 = curr & (1u << 16u);
    }

    inline void set_FRCE_ON(bool rosc, bool xosc, bool clocks, bool resets,
                            bool busfabric, bool rom, bool sram0, bool sram1,
                            bool sram2, bool sram3, bool sram4, bool sram5,
                            bool xip, bool vreg_and_chip_reset, bool sio,
                            bool proc0, bool proc1) volatile
    {
        uint32_t curr = FRCE_ON;

        curr &= ~(0b1u << 0u);
        curr |= (rosc & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (xosc & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (clocks & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (resets & 0b1u) << 3u;
        curr &= ~(0b1u << 4u);
        curr |= (busfabric & 0b1u) << 4u;
        curr &= ~(0b1u << 5u);
        curr |= (rom & 0b1u) << 5u;
        curr &= ~(0b1u << 6u);
        curr |= (sram0 & 0b1u) << 6u;
        curr &= ~(0b1u << 7u);
        curr |= (sram1 & 0b1u) << 7u;
        curr &= ~(0b1u << 8u);
        curr |= (sram2 & 0b1u) << 8u;
        curr &= ~(0b1u << 9u);
        curr |= (sram3 & 0b1u) << 9u;
        curr &= ~(0b1u << 10u);
        curr |= (sram4 & 0b1u) << 10u;
        curr &= ~(0b1u << 11u);
        curr |= (sram5 & 0b1u) << 11u;
        curr &= ~(0b1u << 12u);
        curr |= (xip & 0b1u) << 12u;
        curr &= ~(0b1u << 13u);
        curr |= (vreg_and_chip_reset & 0b1u) << 13u;
        curr &= ~(0b1u << 14u);
        curr |= (sio & 0b1u) << 14u;
        curr &= ~(0b1u << 15u);
        curr |= (proc0 & 0b1u) << 15u;
        curr &= ~(0b1u << 16u);
        curr |= (proc1 & 0b1u) << 16u;

        FRCE_ON = curr;
    }

    inline bool get_FRCE_OFF_rosc() volatile
    {
        return FRCE_OFF & (1u << 0u);
    }

    inline void set_FRCE_OFF_rosc() volatile
    {
        FRCE_OFF |= 1u << 0u;
    }

    inline void clear_FRCE_OFF_rosc() volatile
    {
        FRCE_OFF &= ~(1u << 0u);
    }

    inline void toggle_FRCE_OFF_rosc() volatile
    {
        FRCE_OFF ^= 1u << 0u;
    }

    inline bool get_FRCE_OFF_xosc() volatile
    {
        return FRCE_OFF & (1u << 1u);
    }

    inline void set_FRCE_OFF_xosc() volatile
    {
        FRCE_OFF |= 1u << 1u;
    }

    inline void clear_FRCE_OFF_xosc() volatile
    {
        FRCE_OFF &= ~(1u << 1u);
    }

    inline void toggle_FRCE_OFF_xosc() volatile
    {
        FRCE_OFF ^= 1u << 1u;
    }

    inline bool get_FRCE_OFF_clocks() volatile
    {
        return FRCE_OFF & (1u << 2u);
    }

    inline void set_FRCE_OFF_clocks() volatile
    {
        FRCE_OFF |= 1u << 2u;
    }

    inline void clear_FRCE_OFF_clocks() volatile
    {
        FRCE_OFF &= ~(1u << 2u);
    }

    inline void toggle_FRCE_OFF_clocks() volatile
    {
        FRCE_OFF ^= 1u << 2u;
    }

    inline bool get_FRCE_OFF_resets() volatile
    {
        return FRCE_OFF & (1u << 3u);
    }

    inline void set_FRCE_OFF_resets() volatile
    {
        FRCE_OFF |= 1u << 3u;
    }

    inline void clear_FRCE_OFF_resets() volatile
    {
        FRCE_OFF &= ~(1u << 3u);
    }

    inline void toggle_FRCE_OFF_resets() volatile
    {
        FRCE_OFF ^= 1u << 3u;
    }

    inline bool get_FRCE_OFF_busfabric() volatile
    {
        return FRCE_OFF & (1u << 4u);
    }

    inline void set_FRCE_OFF_busfabric() volatile
    {
        FRCE_OFF |= 1u << 4u;
    }

    inline void clear_FRCE_OFF_busfabric() volatile
    {
        FRCE_OFF &= ~(1u << 4u);
    }

    inline void toggle_FRCE_OFF_busfabric() volatile
    {
        FRCE_OFF ^= 1u << 4u;
    }

    inline bool get_FRCE_OFF_rom() volatile
    {
        return FRCE_OFF & (1u << 5u);
    }

    inline void set_FRCE_OFF_rom() volatile
    {
        FRCE_OFF |= 1u << 5u;
    }

    inline void clear_FRCE_OFF_rom() volatile
    {
        FRCE_OFF &= ~(1u << 5u);
    }

    inline void toggle_FRCE_OFF_rom() volatile
    {
        FRCE_OFF ^= 1u << 5u;
    }

    inline bool get_FRCE_OFF_sram0() volatile
    {
        return FRCE_OFF & (1u << 6u);
    }

    inline void set_FRCE_OFF_sram0() volatile
    {
        FRCE_OFF |= 1u << 6u;
    }

    inline void clear_FRCE_OFF_sram0() volatile
    {
        FRCE_OFF &= ~(1u << 6u);
    }

    inline void toggle_FRCE_OFF_sram0() volatile
    {
        FRCE_OFF ^= 1u << 6u;
    }

    inline bool get_FRCE_OFF_sram1() volatile
    {
        return FRCE_OFF & (1u << 7u);
    }

    inline void set_FRCE_OFF_sram1() volatile
    {
        FRCE_OFF |= 1u << 7u;
    }

    inline void clear_FRCE_OFF_sram1() volatile
    {
        FRCE_OFF &= ~(1u << 7u);
    }

    inline void toggle_FRCE_OFF_sram1() volatile
    {
        FRCE_OFF ^= 1u << 7u;
    }

    inline bool get_FRCE_OFF_sram2() volatile
    {
        return FRCE_OFF & (1u << 8u);
    }

    inline void set_FRCE_OFF_sram2() volatile
    {
        FRCE_OFF |= 1u << 8u;
    }

    inline void clear_FRCE_OFF_sram2() volatile
    {
        FRCE_OFF &= ~(1u << 8u);
    }

    inline void toggle_FRCE_OFF_sram2() volatile
    {
        FRCE_OFF ^= 1u << 8u;
    }

    inline bool get_FRCE_OFF_sram3() volatile
    {
        return FRCE_OFF & (1u << 9u);
    }

    inline void set_FRCE_OFF_sram3() volatile
    {
        FRCE_OFF |= 1u << 9u;
    }

    inline void clear_FRCE_OFF_sram3() volatile
    {
        FRCE_OFF &= ~(1u << 9u);
    }

    inline void toggle_FRCE_OFF_sram3() volatile
    {
        FRCE_OFF ^= 1u << 9u;
    }

    inline bool get_FRCE_OFF_sram4() volatile
    {
        return FRCE_OFF & (1u << 10u);
    }

    inline void set_FRCE_OFF_sram4() volatile
    {
        FRCE_OFF |= 1u << 10u;
    }

    inline void clear_FRCE_OFF_sram4() volatile
    {
        FRCE_OFF &= ~(1u << 10u);
    }

    inline void toggle_FRCE_OFF_sram4() volatile
    {
        FRCE_OFF ^= 1u << 10u;
    }

    inline bool get_FRCE_OFF_sram5() volatile
    {
        return FRCE_OFF & (1u << 11u);
    }

    inline void set_FRCE_OFF_sram5() volatile
    {
        FRCE_OFF |= 1u << 11u;
    }

    inline void clear_FRCE_OFF_sram5() volatile
    {
        FRCE_OFF &= ~(1u << 11u);
    }

    inline void toggle_FRCE_OFF_sram5() volatile
    {
        FRCE_OFF ^= 1u << 11u;
    }

    inline bool get_FRCE_OFF_xip() volatile
    {
        return FRCE_OFF & (1u << 12u);
    }

    inline void set_FRCE_OFF_xip() volatile
    {
        FRCE_OFF |= 1u << 12u;
    }

    inline void clear_FRCE_OFF_xip() volatile
    {
        FRCE_OFF &= ~(1u << 12u);
    }

    inline void toggle_FRCE_OFF_xip() volatile
    {
        FRCE_OFF ^= 1u << 12u;
    }

    inline bool get_FRCE_OFF_vreg_and_chip_reset() volatile
    {
        return FRCE_OFF & (1u << 13u);
    }

    inline void set_FRCE_OFF_vreg_and_chip_reset() volatile
    {
        FRCE_OFF |= 1u << 13u;
    }

    inline void clear_FRCE_OFF_vreg_and_chip_reset() volatile
    {
        FRCE_OFF &= ~(1u << 13u);
    }

    inline void toggle_FRCE_OFF_vreg_and_chip_reset() volatile
    {
        FRCE_OFF ^= 1u << 13u;
    }

    inline bool get_FRCE_OFF_sio() volatile
    {
        return FRCE_OFF & (1u << 14u);
    }

    inline void set_FRCE_OFF_sio() volatile
    {
        FRCE_OFF |= 1u << 14u;
    }

    inline void clear_FRCE_OFF_sio() volatile
    {
        FRCE_OFF &= ~(1u << 14u);
    }

    inline void toggle_FRCE_OFF_sio() volatile
    {
        FRCE_OFF ^= 1u << 14u;
    }

    inline bool get_FRCE_OFF_proc0() volatile
    {
        return FRCE_OFF & (1u << 15u);
    }

    inline void set_FRCE_OFF_proc0() volatile
    {
        FRCE_OFF |= 1u << 15u;
    }

    inline void clear_FRCE_OFF_proc0() volatile
    {
        FRCE_OFF &= ~(1u << 15u);
    }

    inline void toggle_FRCE_OFF_proc0() volatile
    {
        FRCE_OFF ^= 1u << 15u;
    }

    inline bool get_FRCE_OFF_proc1() volatile
    {
        return FRCE_OFF & (1u << 16u);
    }

    inline void set_FRCE_OFF_proc1() volatile
    {
        FRCE_OFF |= 1u << 16u;
    }

    inline void clear_FRCE_OFF_proc1() volatile
    {
        FRCE_OFF &= ~(1u << 16u);
    }

    inline void toggle_FRCE_OFF_proc1() volatile
    {
        FRCE_OFF ^= 1u << 16u;
    }

    inline void get_FRCE_OFF(bool &rosc, bool &xosc, bool &clocks,
                             bool &resets, bool &busfabric, bool &rom,
                             bool &sram0, bool &sram1, bool &sram2,
                             bool &sram3, bool &sram4, bool &sram5, bool &xip,
                             bool &vreg_and_chip_reset, bool &sio, bool &proc0,
                             bool &proc1) volatile
    {
        uint32_t curr = FRCE_OFF;

        rosc = curr & (1u << 0u);
        xosc = curr & (1u << 1u);
        clocks = curr & (1u << 2u);
        resets = curr & (1u << 3u);
        busfabric = curr & (1u << 4u);
        rom = curr & (1u << 5u);
        sram0 = curr & (1u << 6u);
        sram1 = curr & (1u << 7u);
        sram2 = curr & (1u << 8u);
        sram3 = curr & (1u << 9u);
        sram4 = curr & (1u << 10u);
        sram5 = curr & (1u << 11u);
        xip = curr & (1u << 12u);
        vreg_and_chip_reset = curr & (1u << 13u);
        sio = curr & (1u << 14u);
        proc0 = curr & (1u << 15u);
        proc1 = curr & (1u << 16u);
    }

    inline void set_FRCE_OFF(bool rosc, bool xosc, bool clocks, bool resets,
                             bool busfabric, bool rom, bool sram0, bool sram1,
                             bool sram2, bool sram3, bool sram4, bool sram5,
                             bool xip, bool vreg_and_chip_reset, bool sio,
                             bool proc0, bool proc1) volatile
    {
        uint32_t curr = FRCE_OFF;

        curr &= ~(0b1u << 0u);
        curr |= (rosc & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (xosc & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (clocks & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (resets & 0b1u) << 3u;
        curr &= ~(0b1u << 4u);
        curr |= (busfabric & 0b1u) << 4u;
        curr &= ~(0b1u << 5u);
        curr |= (rom & 0b1u) << 5u;
        curr &= ~(0b1u << 6u);
        curr |= (sram0 & 0b1u) << 6u;
        curr &= ~(0b1u << 7u);
        curr |= (sram1 & 0b1u) << 7u;
        curr &= ~(0b1u << 8u);
        curr |= (sram2 & 0b1u) << 8u;
        curr &= ~(0b1u << 9u);
        curr |= (sram3 & 0b1u) << 9u;
        curr &= ~(0b1u << 10u);
        curr |= (sram4 & 0b1u) << 10u;
        curr &= ~(0b1u << 11u);
        curr |= (sram5 & 0b1u) << 11u;
        curr &= ~(0b1u << 12u);
        curr |= (xip & 0b1u) << 12u;
        curr &= ~(0b1u << 13u);
        curr |= (vreg_and_chip_reset & 0b1u) << 13u;
        curr &= ~(0b1u << 14u);
        curr |= (sio & 0b1u) << 14u;
        curr &= ~(0b1u << 15u);
        curr |= (proc0 & 0b1u) << 15u;
        curr &= ~(0b1u << 16u);
        curr |= (proc1 & 0b1u) << 16u;

        FRCE_OFF = curr;
    }

    inline bool get_WDSEL_rosc() volatile
    {
        return WDSEL & (1u << 0u);
    }

    inline void set_WDSEL_rosc() volatile
    {
        WDSEL |= 1u << 0u;
    }

    inline void clear_WDSEL_rosc() volatile
    {
        WDSEL &= ~(1u << 0u);
    }

    inline void toggle_WDSEL_rosc() volatile
    {
        WDSEL ^= 1u << 0u;
    }

    inline bool get_WDSEL_xosc() volatile
    {
        return WDSEL & (1u << 1u);
    }

    inline void set_WDSEL_xosc() volatile
    {
        WDSEL |= 1u << 1u;
    }

    inline void clear_WDSEL_xosc() volatile
    {
        WDSEL &= ~(1u << 1u);
    }

    inline void toggle_WDSEL_xosc() volatile
    {
        WDSEL ^= 1u << 1u;
    }

    inline bool get_WDSEL_clocks() volatile
    {
        return WDSEL & (1u << 2u);
    }

    inline void set_WDSEL_clocks() volatile
    {
        WDSEL |= 1u << 2u;
    }

    inline void clear_WDSEL_clocks() volatile
    {
        WDSEL &= ~(1u << 2u);
    }

    inline void toggle_WDSEL_clocks() volatile
    {
        WDSEL ^= 1u << 2u;
    }

    inline bool get_WDSEL_resets() volatile
    {
        return WDSEL & (1u << 3u);
    }

    inline void set_WDSEL_resets() volatile
    {
        WDSEL |= 1u << 3u;
    }

    inline void clear_WDSEL_resets() volatile
    {
        WDSEL &= ~(1u << 3u);
    }

    inline void toggle_WDSEL_resets() volatile
    {
        WDSEL ^= 1u << 3u;
    }

    inline bool get_WDSEL_busfabric() volatile
    {
        return WDSEL & (1u << 4u);
    }

    inline void set_WDSEL_busfabric() volatile
    {
        WDSEL |= 1u << 4u;
    }

    inline void clear_WDSEL_busfabric() volatile
    {
        WDSEL &= ~(1u << 4u);
    }

    inline void toggle_WDSEL_busfabric() volatile
    {
        WDSEL ^= 1u << 4u;
    }

    inline bool get_WDSEL_rom() volatile
    {
        return WDSEL & (1u << 5u);
    }

    inline void set_WDSEL_rom() volatile
    {
        WDSEL |= 1u << 5u;
    }

    inline void clear_WDSEL_rom() volatile
    {
        WDSEL &= ~(1u << 5u);
    }

    inline void toggle_WDSEL_rom() volatile
    {
        WDSEL ^= 1u << 5u;
    }

    inline bool get_WDSEL_sram0() volatile
    {
        return WDSEL & (1u << 6u);
    }

    inline void set_WDSEL_sram0() volatile
    {
        WDSEL |= 1u << 6u;
    }

    inline void clear_WDSEL_sram0() volatile
    {
        WDSEL &= ~(1u << 6u);
    }

    inline void toggle_WDSEL_sram0() volatile
    {
        WDSEL ^= 1u << 6u;
    }

    inline bool get_WDSEL_sram1() volatile
    {
        return WDSEL & (1u << 7u);
    }

    inline void set_WDSEL_sram1() volatile
    {
        WDSEL |= 1u << 7u;
    }

    inline void clear_WDSEL_sram1() volatile
    {
        WDSEL &= ~(1u << 7u);
    }

    inline void toggle_WDSEL_sram1() volatile
    {
        WDSEL ^= 1u << 7u;
    }

    inline bool get_WDSEL_sram2() volatile
    {
        return WDSEL & (1u << 8u);
    }

    inline void set_WDSEL_sram2() volatile
    {
        WDSEL |= 1u << 8u;
    }

    inline void clear_WDSEL_sram2() volatile
    {
        WDSEL &= ~(1u << 8u);
    }

    inline void toggle_WDSEL_sram2() volatile
    {
        WDSEL ^= 1u << 8u;
    }

    inline bool get_WDSEL_sram3() volatile
    {
        return WDSEL & (1u << 9u);
    }

    inline void set_WDSEL_sram3() volatile
    {
        WDSEL |= 1u << 9u;
    }

    inline void clear_WDSEL_sram3() volatile
    {
        WDSEL &= ~(1u << 9u);
    }

    inline void toggle_WDSEL_sram3() volatile
    {
        WDSEL ^= 1u << 9u;
    }

    inline bool get_WDSEL_sram4() volatile
    {
        return WDSEL & (1u << 10u);
    }

    inline void set_WDSEL_sram4() volatile
    {
        WDSEL |= 1u << 10u;
    }

    inline void clear_WDSEL_sram4() volatile
    {
        WDSEL &= ~(1u << 10u);
    }

    inline void toggle_WDSEL_sram4() volatile
    {
        WDSEL ^= 1u << 10u;
    }

    inline bool get_WDSEL_sram5() volatile
    {
        return WDSEL & (1u << 11u);
    }

    inline void set_WDSEL_sram5() volatile
    {
        WDSEL |= 1u << 11u;
    }

    inline void clear_WDSEL_sram5() volatile
    {
        WDSEL &= ~(1u << 11u);
    }

    inline void toggle_WDSEL_sram5() volatile
    {
        WDSEL ^= 1u << 11u;
    }

    inline bool get_WDSEL_xip() volatile
    {
        return WDSEL & (1u << 12u);
    }

    inline void set_WDSEL_xip() volatile
    {
        WDSEL |= 1u << 12u;
    }

    inline void clear_WDSEL_xip() volatile
    {
        WDSEL &= ~(1u << 12u);
    }

    inline void toggle_WDSEL_xip() volatile
    {
        WDSEL ^= 1u << 12u;
    }

    inline bool get_WDSEL_vreg_and_chip_reset() volatile
    {
        return WDSEL & (1u << 13u);
    }

    inline void set_WDSEL_vreg_and_chip_reset() volatile
    {
        WDSEL |= 1u << 13u;
    }

    inline void clear_WDSEL_vreg_and_chip_reset() volatile
    {
        WDSEL &= ~(1u << 13u);
    }

    inline void toggle_WDSEL_vreg_and_chip_reset() volatile
    {
        WDSEL ^= 1u << 13u;
    }

    inline bool get_WDSEL_sio() volatile
    {
        return WDSEL & (1u << 14u);
    }

    inline void set_WDSEL_sio() volatile
    {
        WDSEL |= 1u << 14u;
    }

    inline void clear_WDSEL_sio() volatile
    {
        WDSEL &= ~(1u << 14u);
    }

    inline void toggle_WDSEL_sio() volatile
    {
        WDSEL ^= 1u << 14u;
    }

    inline bool get_WDSEL_proc0() volatile
    {
        return WDSEL & (1u << 15u);
    }

    inline void set_WDSEL_proc0() volatile
    {
        WDSEL |= 1u << 15u;
    }

    inline void clear_WDSEL_proc0() volatile
    {
        WDSEL &= ~(1u << 15u);
    }

    inline void toggle_WDSEL_proc0() volatile
    {
        WDSEL ^= 1u << 15u;
    }

    inline bool get_WDSEL_proc1() volatile
    {
        return WDSEL & (1u << 16u);
    }

    inline void set_WDSEL_proc1() volatile
    {
        WDSEL |= 1u << 16u;
    }

    inline void clear_WDSEL_proc1() volatile
    {
        WDSEL &= ~(1u << 16u);
    }

    inline void toggle_WDSEL_proc1() volatile
    {
        WDSEL ^= 1u << 16u;
    }

    inline void get_WDSEL(bool &rosc, bool &xosc, bool &clocks, bool &resets,
                          bool &busfabric, bool &rom, bool &sram0, bool &sram1,
                          bool &sram2, bool &sram3, bool &sram4, bool &sram5,
                          bool &xip, bool &vreg_and_chip_reset, bool &sio,
                          bool &proc0, bool &proc1) volatile
    {
        uint32_t curr = WDSEL;

        rosc = curr & (1u << 0u);
        xosc = curr & (1u << 1u);
        clocks = curr & (1u << 2u);
        resets = curr & (1u << 3u);
        busfabric = curr & (1u << 4u);
        rom = curr & (1u << 5u);
        sram0 = curr & (1u << 6u);
        sram1 = curr & (1u << 7u);
        sram2 = curr & (1u << 8u);
        sram3 = curr & (1u << 9u);
        sram4 = curr & (1u << 10u);
        sram5 = curr & (1u << 11u);
        xip = curr & (1u << 12u);
        vreg_and_chip_reset = curr & (1u << 13u);
        sio = curr & (1u << 14u);
        proc0 = curr & (1u << 15u);
        proc1 = curr & (1u << 16u);
    }

    inline void set_WDSEL(bool rosc, bool xosc, bool clocks, bool resets,
                          bool busfabric, bool rom, bool sram0, bool sram1,
                          bool sram2, bool sram3, bool sram4, bool sram5,
                          bool xip, bool vreg_and_chip_reset, bool sio,
                          bool proc0, bool proc1) volatile
    {
        uint32_t curr = WDSEL;

        curr &= ~(0b1u << 0u);
        curr |= (rosc & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (xosc & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (clocks & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (resets & 0b1u) << 3u;
        curr &= ~(0b1u << 4u);
        curr |= (busfabric & 0b1u) << 4u;
        curr &= ~(0b1u << 5u);
        curr |= (rom & 0b1u) << 5u;
        curr &= ~(0b1u << 6u);
        curr |= (sram0 & 0b1u) << 6u;
        curr &= ~(0b1u << 7u);
        curr |= (sram1 & 0b1u) << 7u;
        curr &= ~(0b1u << 8u);
        curr |= (sram2 & 0b1u) << 8u;
        curr &= ~(0b1u << 9u);
        curr |= (sram3 & 0b1u) << 9u;
        curr &= ~(0b1u << 10u);
        curr |= (sram4 & 0b1u) << 10u;
        curr &= ~(0b1u << 11u);
        curr |= (sram5 & 0b1u) << 11u;
        curr &= ~(0b1u << 12u);
        curr |= (xip & 0b1u) << 12u;
        curr &= ~(0b1u << 13u);
        curr |= (vreg_and_chip_reset & 0b1u) << 13u;
        curr &= ~(0b1u << 14u);
        curr |= (sio & 0b1u) << 14u;
        curr &= ~(0b1u << 15u);
        curr |= (proc0 & 0b1u) << 15u;
        curr &= ~(0b1u << 16u);
        curr |= (proc1 & 0b1u) << 16u;

        WDSEL = curr;
    }

    inline bool get_DONE_rosc() volatile
    {
        return DONE & (1u << 0u);
    }

    inline bool get_DONE_xosc() volatile
    {
        return DONE & (1u << 1u);
    }

    inline bool get_DONE_clocks() volatile
    {
        return DONE & (1u << 2u);
    }

    inline bool get_DONE_resets() volatile
    {
        return DONE & (1u << 3u);
    }

    inline bool get_DONE_busfabric() volatile
    {
        return DONE & (1u << 4u);
    }

    inline bool get_DONE_rom() volatile
    {
        return DONE & (1u << 5u);
    }

    inline bool get_DONE_sram0() volatile
    {
        return DONE & (1u << 6u);
    }

    inline bool get_DONE_sram1() volatile
    {
        return DONE & (1u << 7u);
    }

    inline bool get_DONE_sram2() volatile
    {
        return DONE & (1u << 8u);
    }

    inline bool get_DONE_sram3() volatile
    {
        return DONE & (1u << 9u);
    }

    inline bool get_DONE_sram4() volatile
    {
        return DONE & (1u << 10u);
    }

    inline bool get_DONE_sram5() volatile
    {
        return DONE & (1u << 11u);
    }

    inline bool get_DONE_xip() volatile
    {
        return DONE & (1u << 12u);
    }

    inline bool get_DONE_vreg_and_chip_reset() volatile
    {
        return DONE & (1u << 13u);
    }

    inline bool get_DONE_sio() volatile
    {
        return DONE & (1u << 14u);
    }

    inline bool get_DONE_proc0() volatile
    {
        return DONE & (1u << 15u);
    }

    inline bool get_DONE_proc1() volatile
    {
        return DONE & (1u << 16u);
    }

    inline void get_DONE(bool &rosc, bool &xosc, bool &clocks, bool &resets,
                         bool &busfabric, bool &rom, bool &sram0, bool &sram1,
                         bool &sram2, bool &sram3, bool &sram4, bool &sram5,
                         bool &xip, bool &vreg_and_chip_reset, bool &sio,
                         bool &proc0, bool &proc1) volatile
    {
        uint32_t curr = DONE;

        rosc = curr & (1u << 0u);
        xosc = curr & (1u << 1u);
        clocks = curr & (1u << 2u);
        resets = curr & (1u << 3u);
        busfabric = curr & (1u << 4u);
        rom = curr & (1u << 5u);
        sram0 = curr & (1u << 6u);
        sram1 = curr & (1u << 7u);
        sram2 = curr & (1u << 8u);
        sram3 = curr & (1u << 9u);
        sram4 = curr & (1u << 10u);
        sram5 = curr & (1u << 11u);
        xip = curr & (1u << 12u);
        vreg_and_chip_reset = curr & (1u << 13u);
        sio = curr & (1u << 14u);
        proc0 = curr & (1u << 15u);
        proc1 = curr & (1u << 16u);
    }
};

static_assert(sizeof(psm) == psm::size);

static volatile psm *const PSM = reinterpret_cast<psm *>(0x40010000);

}; // namespace RP2040