)]}'
{
  "log": [
    {
      "commit": "614aab20d7f6dab14c041a3cf03b8d921a10067e",
      "tree": "3ce44ab555a7ace0fd33b07dd3850e34d9b05a52",
      "parents": [
        "4762ed5eef323a4267720a6b6da287c88738f901"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Apr 20 15:26:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 15:26:33 2026 -0700"
      },
      "message": "Optionally generate instance types that support interior mutability. (#14)\n\nThese allow register read AND write operations to be made with just a\n`\u0026self` reference."
    },
    {
      "commit": "4762ed5eef323a4267720a6b6da287c88738f901",
      "tree": "30cd2a19e5b6d90a651cf11b07b8275dce85b4fc",
      "parents": [
        "1f538d530f8d35b29c39de234d9227c57befb4fb"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Nov 07 15:06:30 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 07 15:06:30 2025 -0800"
      },
      "message": "Optionally generate `RegisterBlock::into_${reg_name}(self)` methods. (#13)\n\nThese are useful for wrapping a register array in an auxiliary type that\nis exposed to the caller of the driver (for example, exposing a portion\nof a MMIO peripheral buffer)."
    },
    {
      "commit": "1f538d530f8d35b29c39de234d9227c57befb4fb",
      "tree": "0b8e059ecedd769618a5859fdab8940201c42f29",
      "parents": [
        "2225e40ebff6828b4bb38949496a213015667a72"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Sep 04 00:39:09 2025 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Fri Nov 07 14:23:21 2025 -0800"
      },
      "message": "Fix new clippy lint errors.\n"
    },
    {
      "commit": "2225e40ebff6828b4bb38949496a213015667a72",
      "tree": "0ec4870e64feb3eb44bbec95fb9b27a843194be4",
      "parents": [
        "bc2f6e7bd3673456d553bc56e609b975c4caa645"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Sep 04 00:22:45 2025 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Fri Nov 07 14:23:21 2025 -0800"
      },
      "message": "Constify *ReadVal and *WriteVal.\n\nIn addition to making all the field methods const, this exposes the\ninner data as `.0`, making it possible to access the raw value without\nresorting to the From trait (that can\u0027t be used from const context).\n"
    },
    {
      "commit": "bc2f6e7bd3673456d553bc56e609b975c4caa645",
      "tree": "4b6d6a02ebcbd95971608c5de4617ff334ec1eb6",
      "parents": [
        "412ca40146d5d2012417e493b4a01096b04edf4b"
      ],
      "author": {
        "name": "stevenportley",
        "email": "portleys4@gmail.com",
        "time": "Tue Oct 14 11:05:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 11:05:24 2025 -0700"
      },
      "message": "Add fill method for Array (#12)\n\nThis allows filling MMIO arrays from a single value.\n\nThis avoids the risk of putting a large amount of data on the\nstack when using write().\n\nSigned-off-by: Steven Portley \u003csportley@google.com\u003e"
    },
    {
      "commit": "412ca40146d5d2012417e493b4a01096b04edf4b",
      "tree": "7892c72445dcade79fee2d83e357c502172463fe",
      "parents": [
        "0c1848c8b6e8b07f75c973dcc0bbb56c0efad4f3"
      ],
      "author": {
        "name": "cfrantz",
        "email": "frantzcj+github@gmail.com",
        "time": "Tue Jun 03 15:10:59 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 03 15:10:59 2025 -0700"
      },
      "message": "Fix the constraints on `ptr` (#10)\n\nRemove the `Default` constraint on the impl for the `ptr` method.\n\nSigned-off-by: Chris Frantz \u003ccfrantz@google.com\u003e"
    },
    {
      "commit": "0c1848c8b6e8b07f75c973dcc0bbb56c0efad4f3",
      "tree": "9eaa1b4ce0c1907d1adde1d7a2edff47cbb35021",
      "parents": [
        "347fcbc9a6053fbb58bc03b92fb5a43d72a86482"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 05 16:35:22 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 05 16:35:22 2025 -0800"
      },
      "message": "Add Array::get_sub_array(). (#5)\n\nThis is useful when you only need to access a portion of the array."
    },
    {
      "commit": "347fcbc9a6053fbb58bc03b92fb5a43d72a86482",
      "tree": "6005d9602dc7c65465eb9abbe292c99bc2297bcf",
      "parents": [
        "33d24a608918c3168be469212acf7f02abe8990a"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 05 16:35:07 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 05 16:35:07 2025 -0800"
      },
      "message": "Trim starting \u0027!\u0027 characters out of doc comments. (#9)\n\nThese have special meaning to the rustdoc compiler, and must be avoided."
    },
    {
      "commit": "33d24a608918c3168be469212acf7f02abe8990a",
      "tree": "446d038ecfef5113013f6ed0761c082802b2e345",
      "parents": [
        "1535af89eb789c5736d39cd16fbaf04f28165a69"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 05 16:31:05 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 05 16:31:05 2025 -0800"
      },
      "message": "Fix new clippy warnings in generated code. (#7)\n\n"
    },
    {
      "commit": "1535af89eb789c5736d39cd16fbaf04f28165a69",
      "tree": "78d02052910e0369a3930fbcc68af335823056da",
      "parents": [
        "130011bde3a8c4e1358ed6bc4876ea5e77f18071"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 05 16:30:51 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 05 16:30:51 2025 -0800"
      },
      "message": "Add W0C and W0S field types. (#8)\n\n"
    },
    {
      "commit": "130011bde3a8c4e1358ed6bc4876ea5e77f18071",
      "tree": "59a31c3a2da9dd3bf45fff0f6072e0ca602a233d",
      "parents": [
        "a09391bf08fd96adae58fe9a17deab89e092c3d3"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 05 16:30:30 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 05 16:30:30 2025 -0800"
      },
      "message": "Add bazel module for external consumption. (#6)\n\n"
    },
    {
      "commit": "a09391bf08fd96adae58fe9a17deab89e092c3d3",
      "tree": "5a3099fb90c1bb8b8958368d90ebdbef7a526e8d",
      "parents": [
        "04a264042c35bd8815d4c020255c406b1adab526"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 02 15:58:36 2024 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Fri May 03 16:10:59 2024 -0700"
      },
      "message": "cargo-fmt: format with version 1.77.\n"
    },
    {
      "commit": "04a264042c35bd8815d4c020255c406b1adab526",
      "tree": "d3656cb9a90083f619ff8582eed378b6e855e510",
      "parents": [
        "0b650ffe3c323a69008e9fa42da02769316cf5d3"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed May 01 16:41:21 2024 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Fri May 03 16:10:59 2024 -0700"
      },
      "message": "Add ValidatedRegisterBlock::extract_array().\n\nThis can be used to convert from contiguously defined registers (for\nexample, [data0, data1, data2]) into a register array.\n"
    },
    {
      "commit": "0b650ffe3c323a69008e9fa42da02769316cf5d3",
      "tree": "4a1b148ad39886612d82b95993052e81e68676df",
      "parents": [
        "03f3ca03ccdf6b7e92c80d6165d2d630e5b71661"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Mar 19 15:34:05 2024 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Wed Mar 20 13:31:20 2024 -0700"
      },
      "message": "Fix missing comma in RegisterSubBlock::Array codegen.\n"
    },
    {
      "commit": "03f3ca03ccdf6b7e92c80d6165d2d630e5b71661",
      "tree": "4c848dc9825b961ede2159ba2fdc10e746ad0d88",
      "parents": [
        "faab2f50fd4f73f96517d265456c9753c7a4b85c"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Mar 12 12:05:43 2024 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add basic presubmit checks for ureg repo.\n"
    },
    {
      "commit": "faab2f50fd4f73f96517d265456c9753c7a4b85c",
      "tree": "eeff26d460b11dd697cdcadaa9d00a7bd8029462",
      "parents": [
        "a6a4f5e97fe5a3c88cf09852bb9020e28ddba88c"
      ],
      "author": {
        "name": "leongross",
        "email": "leon.gross@9elements.com",
        "time": "Thu Feb 29 18:18:14 2024 +0100"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "nit: update already found typos from #1111 (#1292)\n\n"
    },
    {
      "commit": "a6a4f5e97fe5a3c88cf09852bb9020e28ddba88c",
      "tree": "bf6a5bcc1f943e4b3674aa252d13c1168f7d97e2",
      "parents": [
        "a1b2f71c1865bfead777716854ef63dc7953004e"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Oct 23 14:32:07 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Specialize RealMmioMut::read_volatile_array() for risc-v.\n\nAddresses #922.\n\nThese specializations unroll register array reads for 12-word and\n16-word reads; they were previously used for RealMmio, but I forgot to\nadd them for RealMmioMut.\n\nThis improves code size, and improves our glitch resistence (since there\nis no loop conditional to glitch).\n"
    },
    {
      "commit": "a1b2f71c1865bfead777716854ef63dc7953004e",
      "tree": "0c662c4a89fc8adb33fa3f556e14b6e4daf096a2",
      "parents": [
        "60e65b5c4f61312f31c63717823a5b15f5d9b7f2"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Jul 17 15:57:55 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Add Array::write_ptr().\n\nThis is useful when you need to call write_ptr with something that\ncannot be turned into a Rust reference (such as the zero pointer, when\nhashing the entire ROM contents).\n"
    },
    {
      "commit": "60e65b5c4f61312f31c63717823a5b15f5d9b7f2",
      "tree": "395f353409e3c4108902e32c86aae2e61ad4ca41",
      "parents": [
        "97b4fdc2064eb5e45f0e1252266a788f866beb22"
      ],
      "author": {
        "name": "Benjamin Doron",
        "email": "benjamin.doron00@gmail.com",
        "time": "Fri Jul 28 12:45:09 2023 -0400"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "sw-emulator,ureg: Update proc-macro2 to latest version (#555)\n\nCompilation of the older version with the nightly compiler failed\r\nafter a nightly feature was removed. Update the crate to resolve this\r\nissue."
    },
    {
      "commit": "97b4fdc2064eb5e45f0e1252266a788f866beb22",
      "tree": "c62bd92271b131a075deaa80b879c34e665f9dbf",
      "parents": [
        "2b19eb437ef95967c9512cf99b54baf2bfde98a1"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Jun 30 13:28:59 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Optimize 12-word and 16-word copies for risc-v.\n"
    },
    {
      "commit": "2b19eb437ef95967c9512cf99b54baf2bfde98a1",
      "tree": "ae60c4789ae67067e43399fb6a30e8c971a2651a",
      "parents": [
        "d8033bcc070f7db204675e1d6f4a6407aa27ca29"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Jun 30 12:57:58 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Limit raw types to u8/u16/u32/u64\n\nThis is necessary to allow for future assembly-based optimizations.\n"
    },
    {
      "commit": "d8033bcc070f7db204675e1d6f4a6407aa27ca29",
      "tree": "3b50f73d373fae4fac1c3c82a99ba5eb917912c8",
      "parents": [
        "c9e77035db3f7ca6a354bfc015ae499f085adfc7"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Jun 30 11:25:03 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Add array methods to Mmio/MmioMut traits.\n\nThe default implementations work the same as before, but this allows\nMmio implementations to override this with a faster implementation.\n"
    },
    {
      "commit": "c9e77035db3f7ca6a354bfc015ae499f085adfc7",
      "tree": "15a9a052a86caaf12f0aa16a351ceb92dc086b42",
      "parents": [
        "74ec3336e2d0ce7d8fbd0318f26b8220c19e0232"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Jun 30 11:01:58 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Restrict Array::read/write() to raw values.\n\nAfter this change, Array::read() and Array::write() will only be\navailable when the register\u0027s ReadVal/WriteVal type matches the raw\nregister type (typically u32).\n\nThis allows a future PR to optimize this array-writing logic with inline\nassembly (since there is no longer any need to call ReadVal::into() or\nWriteVal::into() for each item in the array).\n"
    },
    {
      "commit": "74ec3336e2d0ce7d8fbd0318f26b8220c19e0232",
      "tree": "45cd789efd3390f18a4a6341d8af734cc43ace4e",
      "parents": [
        "7a02dc56079eae66d7c3a0a8b8b060ae3197473a"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Jun 05 10:07:10 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add #[inline(always)] to trivial ureg functions (-48 bytes).\n\nThis is important for efficient codegen when LTO is disabled, and can\neven help the compiler a bit when LTO is enabled.\n"
    },
    {
      "commit": "7a02dc56079eae66d7c3a0a8b8b060ae3197473a",
      "tree": "ef710c4c37fdfedccef712790b24145171055ac4",
      "parents": [
        "5cf1194299c6b39179d0aade5c0c0c9d0ebf980a"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Jun 05 10:54:09 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Remove match statements in ureg enum codegen (-1256 bytes).\n\nIn some cases with large (64+) matches, LLVM was generating unnecessary\njump tables, which bloated out our code size.\n"
    },
    {
      "commit": "5cf1194299c6b39179d0aade5c0c0c9d0ebf980a",
      "tree": "69194c9447abd2816ad4a0e22fa910c291e06d4f",
      "parents": [
        "45996210d57ad249a412469c02f6f9bff6b573a5"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon May 22 14:04:57 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg-systemrdl: Parse nested regfiles into sub blocks.\n\nThis gives gives us access to registers from the intr_block_t regfile.\n"
    },
    {
      "commit": "45996210d57ad249a412469c02f6f9bff6b573a5",
      "tree": "7fad5b518d5517dc47440935de9705aab3fccdff",
      "parents": [
        "0a5f1060b8da0c83b7f186859e97abcc67b4fded"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon May 22 14:04:52 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Add support for register sub-blocks.\n\nAlso, bring sub-array logic up to date with the latest TMmio types.\n"
    },
    {
      "commit": "0a5f1060b8da0c83b7f186859e97abcc67b4fded",
      "tree": "c7c78aa105ba05c1b6264dc52c6fb675f1cd45c7",
      "parents": [
        "e4ee7e08d21ae3bdc3c5069789e0af6efcbbefc5"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon May 22 13:37:22 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: RegisterBlockArray should have a RegisterBlock.\n"
    },
    {
      "commit": "e4ee7e08d21ae3bdc3c5069789e0af6efcbbefc5",
      "tree": "4dbbae8d21da2ed240167b00bffcd7c459ef9e59",
      "parents": [
        "1519f0ff464945ce42f4496c444474cceb59d8fd"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 18 23:34:14 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Remove the old \"safe\" RegisterBlock instance fn.\n\nWith this change, it is no longer possible to create a RegisterBlock\nfrom safe code, and drivers now have MUCH stronger confidence that they\nexclusively control their peripherals.\n"
    },
    {
      "commit": "1519f0ff464945ce42f4496c444474cceb59d8fd",
      "tree": "7e338279abad76d5939af66aa774337c504c2ec3",
      "parents": [
        "aaf455667126a1e6e8f257c86e518734b226f9b6"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 18 16:29:01 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Generate peripheral instance type.\n\nIn safe code, holders of an instance of this type are guaranteed\nexclusive access to this peripheral.\n\nOnce all the drivers have been migrated, the old mechanism to get a\nRegisterBlock from arbitrary safe-code will be removed, making it\nimpossible for safe code to manipulate a peripheral behind the back of a\ndriver.\n"
    },
    {
      "commit": "aaf455667126a1e6e8f257c86e518734b226f9b6",
      "tree": "794e6f59638785f91e222ff155c8bd064dc1d50d",
      "parents": [
        "d2fd5a16b763a061f8d802d17ff8a9933ac22b15"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 18 14:17:25 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Give a lifetime parameter to RealMmio and RealMmioMut.\n\nThe will be used in a future commit to ensure that RegisterBlocks don\u0027t\noutlive where they came from. This is necessary to ensure that\nperipheral registers can\u0027t be tweaked behind a driver\u0027s back without\nresorting to unsafe blocks.\n"
    },
    {
      "commit": "d2fd5a16b763a061f8d802d17ff8a9933ac22b15",
      "tree": "f376153fe264d0d78c01f48e8f5681e70edef1e6",
      "parents": [
        "7ed6eb0ee6bd35091ccfb969f332f73bad7a8882"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 18 11:32:36 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Split ureg::Mmio into Mmio and MmioMut.\n\nThis makes it easy for the same RegisterBlock to be used with either a\nMmio or MmioMut trait depending on whether the owner has permission to\nmutate the registers.\n"
    },
    {
      "commit": "7ed6eb0ee6bd35091ccfb969f332f73bad7a8882",
      "tree": "3c95a9e2bebb06839ac6b9dffc05ffd3bd113e7a",
      "parents": [
        "2cac0225a1034f392c39b19e7e3f4647238ae94a"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu May 18 14:32:41 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Remove TMmio\u003dRealMmio generic default in ureg types.\n\nThis will allow us to store lifetimes in RealMmio in a future commit,\nand the default was hardly ever used anyways.\n"
    },
    {
      "commit": "2cac0225a1034f392c39b19e7e3f4647238ae94a",
      "tree": "84958276e665ff91f9e0e64a8c3d4f1a75ea4dc4",
      "parents": [
        "9d44c234fc00cd54315102c1b04dc233f345d748"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon May 08 16:09:40 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Array4xN optimizations + ureg array optimizations (-840 bytes)\n\nureg: A single set of non-inlined read_volatile_slice()\n/write_volatile_slice() functions should be used for all array reads and\nwrites.\n\nArray4xN: Use uninitialized arrays for conversion to/from byte arrays.\nImprove codegen by moving the uninitialized-array-creation logic into\ninlineable functions, and only putting the bare minimum conversion logic\ninto non-inlineable functions.\n\nAlso, the compiler sometimes creates unnecessary copies of the value\nparameters, so ensure that calls to the conversion methods use\nreferences instead of values.\n\nReduces the ROM size by 840 bytes.\n"
    },
    {
      "commit": "9d44c234fc00cd54315102c1b04dc233f345d748",
      "tree": "926bc5031e06e7c411ecac8ae7919defc7df0a50",
      "parents": [
        "b5754655f5d4246dca8ceabc246b7c0ef2d7ad05"
      ],
      "author": {
        "name": "Royce Rajan",
        "email": "40642728+rkr35@users.noreply.github.com",
        "time": "Tue Apr 11 16:13:16 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg fix: Use register reset values from fields. (#164)\n\nThe current codegen attempts to parse a reset value from the top-level register definitions, but it appears all of the RDLs define reset values on individual fields.\r\n\r\nThis patch adjusts the codegen to produce the register reset value from the field reset values. The codegen will now also report an error if it detects a register reset value since it\u0027s not clear which of (register, field) reset values has precedence."
    },
    {
      "commit": "b5754655f5d4246dca8ceabc246b7c0ef2d7ad05",
      "tree": "d72f8c51b751290323b965d289a00e8fdc7fb90f",
      "parents": [
        "bee53cc48939eb0d6f7cc33a6a9bea0835e95a7c"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Mar 16 11:26:29 2023 -0700"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl parser should ignore \u0027_\u0027 in verilog-style literals.\n\nSee section 4.6 of the SystemRDL_2.0 spec for details.\n"
    },
    {
      "commit": "bee53cc48939eb0d6f7cc33a6a9bea0835e95a7c",
      "tree": "b3b675b76837c2bdbd9452a4292fc05c77912e4b",
      "parents": [
        "14a1bc8f9cd5e28bfbc33ba5c2c98286a997f529"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Mar 08 15:53:03 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Fix clippy lints for ureg.\n"
    },
    {
      "commit": "14a1bc8f9cd5e28bfbc33ba5c2c98286a997f529",
      "tree": "1a39dfc2ab5e2ba7de618bab95701f08d787f32c",
      "parents": [
        "7ece6f94366fe74eb72e8d5a500936b051b907a7"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Mar 06 17:06:50 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add license headers to source files.\n"
    },
    {
      "commit": "7ece6f94366fe74eb72e8d5a500936b051b907a7",
      "tree": "bbace8392f9eb8e940fd5c1f57878355ab3c275c",
      "parents": [
        "3dac1775a22d9fcf5dfb5e6019534535ca1ce9fa"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Feb 22 00:53:09 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add inline hints to improve code-size.\n\nCodegen:\n\ndiff --git a/tmp/old-19d4fc84639c079fe0c820099ddeefadbf9bafc0 b/tmp/new-cecfd35b04a77afdd993a58ac5a3566cc0f1ee80\nindex 1fa1fbf..5e2ac96 100644\n--- a/tmp/old-19d4fc84639c079fe0c820099ddeefadbf9bafc0\n+++ b/tmp/new-cecfd35b04a77afdd993a58ac5a3566cc0f1ee80\n@@ -5,10 +5,10 @@ target/riscv32imc-unknown-none-elf/debug/deps/sha384acc-fe407b26dcfe0bd6\n   [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n   [ 1] .text             PROGBITS        00000000 001000 002107 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/keyvault-4fb0b48ede24b5d3\n-  [ 1] .text             PROGBITS        00000000 001000 000611 00 AXM  0   0  4\n+  [ 1] .text             PROGBITS        00000000 001000 000535 00 AXM  0   0  4\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/pcrbank-1137173429479419\n-  [ 1] .text             PROGBITS        00000000 001000 000ac2 00  AX  0   0  2\n+  [ 1] .text             PROGBITS        00000000 001000 000a2c 00  AX  0   0  2\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/error_reporter-bb9853b7c1d20f6b\n   [ 1] .text             PROGBITS        00000000 001000 0001ec 00  AX  0   0  2\n"
    },
    {
      "commit": "3dac1775a22d9fcf5dfb5e6019534535ca1ce9fa",
      "tree": "37b5a2f4c5736e8227156ec092b8ea184cdf35c6",
      "parents": [
        "3c962fcee4e42792228b82ebd20de8c031d7a1e5"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Feb 13 13:15:48 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Make RegisterBlock generic across Mmio.\n\nThis is useful for writing test cases that remap the MMIO writes to a\ntest double.\n\nCodegen diff:\n\n--- /tmp/old-6b7d7bf2b0e2f224ef3a38f14011e95e52809cdc   2023-02-22 00:28:04.315531732 -0800\n+++ /tmp/new-7e1334b257cb1d330941126e30c269a898c4ff28   2023-02-22 00:30:49.829477315 -0800\n@@ -2,13 +2,13 @@\n   [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n   [ 1] .text             PROGBITS        00000000 001000 000ed0 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/sha384acc-fe407b26dcfe0bd6\n-  [ 1] .text             PROGBITS        00000000 001000 002127 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 002107 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/keyvault-4fb0b48ede24b5d3\n-  [ 1] .text             PROGBITS        00000000 001000 00056d 00 AXM  0   0  4\n+  [ 1] .text             PROGBITS        00000000 001000 000611 00 AXM  0   0  4\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/pcrbank-1137173429479419\n-  [ 1] .text             PROGBITS        00000000 001000 000a5a 00  AX  0   0  2\n+  [ 1] .text             PROGBITS        00000000 001000 000ac2 00  AX  0   0  2\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/error_reporter-bb9853b7c1d20f6b\n   [ 1] .text             PROGBITS        00000000 001000 0001ec 00  AX  0   0  2\n@@ -17,20 +17,20 @@\n   [ 1] .text             PROGBITS        00000000 001000 0001d2 00  AX  0   0  2\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/sha256-bb3b50012c1f6167\n-  [ 1] .text             PROGBITS        00000000 001000 002546 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 002536 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/mailbox-4c953c426b8a5193\n   [ 1] .text             PROGBITS        00000000 001000 001acf 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/hmac384-53a16658694a446f\n-  [ 1] .text             PROGBITS        00000000 001000 002d8c 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 002d7c 00 AXMS  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/ecc384-29620b311093f9b3\n   [ 1] .text             PROGBITS        00000000 001000 004390 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/doe-a6c703fbbd8279c3\n-  [ 1] .text             PROGBITS        00000000 001000 0001b0 00  AX  0   0  2\n+  [ 1] .text             PROGBITS        00000000 001000 0001a8 00  AX  0   0  2\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/sha384-2530900a176f2e2b\n-  [ 1] .text             PROGBITS        00000000 001000 0033c0 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 0033b0 00 AXMS  0   0 16\n    00     .text\n\nI looked at the regression in keyvault, which appears to be due to\nsome spooky inline heuristics. I can fix the problem by adding some\njudicious inline(always), which I\u0027ll do in a future PR.\n"
    },
    {
      "commit": "3c962fcee4e42792228b82ebd20de8c031d7a1e5",
      "tree": "ba1499770f45b66c693faf56ab1fb9bd1d25ea87",
      "parents": [
        "344da6eeb803d1730848cd952a0aaf35c7f9eabd"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Feb 21 22:46:13 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Reuse meta types between registers with the same field layout.\n\nThis makes it trivial for the optimizer to realize that a generic method\noperating on different registers with the same fields can be\ndeduplicated, since they now use the exact same generic type parameters.\n\n(While testing PR #81, I noticed that the optimizer was\nintermittently creating multiple copies of inline(never) functions with\nthe register address hard-coded; this change makes that impossible).\n\nCodegen diff:\n\n--- /tmp/old-9f68fe1b8c2218acce41fac1d49b76f9c55f4b73   2023-02-21 23:58:34.453745653 -0800\n+++ /tmp/new-070db26dd29cb3804a14c2c8b760843c3d0c34cd   2023-02-21 23:59:17.069261052 -0800\n@@ -23,10 +23,10 @@\n   [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n   [ 1] .text             PROGBITS        00000000 001000 001acf 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/hmac384-53a16658694a446f\n-  [ 1] .text             PROGBITS        00000000 001000 002dcc 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 002d8c 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/ecc384-29620b311093f9b3\n-  [ 1] .text             PROGBITS        00000000 001000 0042f0 00 AXM  0   0 16\n+  [ 1] .text             PROGBITS        00000000 001000 004390 00 AXM  0   0 16\n    00     .text\n target/riscv32imc-unknown-none-elf/debug/deps/doe-a6c703fbbd8279c3\n   [ 1] .text             PROGBITS        00000000 001000 0001b0 00  AX  0   0  2\n\nI looked at the disassembly for the ecc size regression, and this seems\nto be optimizer heuristics causing spooky action at a distance; the\noptimizer removed some of the keyvault code from the original\nEcc384::sign() (I guess it figured out that the test-case didn\u0027t invoke\nit?), but not the new one.\n"
    },
    {
      "commit": "344da6eeb803d1730848cd952a0aaf35c7f9eabd",
      "tree": "c6b158e6e4b5c1dabf0b2cc1722d8e0412c4dec9",
      "parents": [
        "0e24e3a5bf5e3e5e546d6c4f36bf974eec0741d4"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Feb 21 23:42:33 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add truncate method to ureg::Array.\n\nThis makes it easy to use the Array::read() and Array::write() methods\nwith arrays that are smaller than the initial array.\n"
    },
    {
      "commit": "0e24e3a5bf5e3e5e546d6c4f36bf974eec0741d4",
      "tree": "3ab72a130fd84716c36fb32a89b1812f94582f7d",
      "parents": [
        "82a5a083de2c78b8cd472a4150d57a8c8e9bea9f"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Feb 13 16:40:25 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl: Correct the default register width to 32 bits.\n\nThis fixes major errors in the soc_ifc offsets, as unlike the other\nregister blocks, the soc_ifc RDL didn\u0027t define a default register width.\nWhoops. To validate, compare the offsets to the addresses from the python scripts:\n\n  CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL                  0x30030000\n  CLP_SOC_IFC_REG_CPTRA_HW_ERROR_NON_FATAL              0x30030004\n  CLP_SOC_IFC_REG_CPTRA_FW_ERROR_FATAL                  0x30030008\n  CLP_SOC_IFC_REG_CPTRA_FW_ERROR_NON_FATAL              0x3003000c\n  CLP_SOC_IFC_REG_CPTRA_HW_ERROR_ENC                    0x30030010\n  CLP_SOC_IFC_REG_CPTRA_FW_ERROR_ENC                    0x30030014\n  CLP_SOC_IFC_REG_CPTRA_BOOT_STATUS                     0x30030018\n  CLP_SOC_IFC_REG_CPTRA_FLOW_STATUS                     0x3003001c\n  CLP_SOC_IFC_REG_CPTRA_RESET_REASON                    0x30030020\n  CLP_SOC_IFC_REG_CPTRA_SECURITY_STATE                  0x30030024\n  CLP_SOC_IFC_REG_CPTRA_VALID_PAUSER_0                  0x30030028\n  CLP_SOC_IFC_REG_CPTRA_PAUSER_LOCK_0                   0x3003003c\n  CLP_SOC_IFC_REG_CPTRA_TRNG_VALID_PAUSER               0x30030050\n  CLP_SOC_IFC_REG_CPTRA_TRNG_PAUSER_LOCK                0x30030054\n  CLP_SOC_IFC_REG_CPTRA_TRNG_DATA_0                     0x30030058\n  CLP_SOC_IFC_REG_CPTRA_TRNG_STATUS                     0x30030088\n  CLP_SOC_IFC_REG_CPTRA_FUSE_WR_DONE                    0x3003008c\n  CLP_SOC_IFC_REG_CPTRA_TIMER_CONFIG                    0x30030090\n  CLP_SOC_IFC_REG_CPTRA_BOOTFSM_GO                      0x30030094\n  CLP_SOC_IFC_REG_CPTRA_DBG_MANUF_SERVICE_REG           0x30030098\n  CLP_SOC_IFC_REG_CPTRA_CLK_GATING_EN                   0x3003009c\n  CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0           0x300300a0\n  CLP_SOC_IFC_REG_CPTRA_GENERIC_OUTPUT_WIRES_0          0x300300a8\n  CLP_SOC_IFC_REG_FUSE_UDS_SEED_0                       0x30030200\n  CLP_SOC_IFC_REG_FUSE_FIELD_ENTROPY_0                  0x30030230\n  CLP_SOC_IFC_REG_FUSE_KEY_MANIFEST_PK_HASH_0           0x30030250\n  CLP_SOC_IFC_REG_FUSE_KEY_MANIFEST_PK_HASH_MASK        0x30030280\n  CLP_SOC_IFC_REG_FUSE_OWNER_PK_HASH_0                  0x30030284\n  CLP_SOC_IFC_REG_FUSE_KEY_MANIFEST_SVN                 0x300302b4\n  CLP_SOC_IFC_REG_FUSE_RUNTIME_SVN_0                    0x300302b8\n  CLP_SOC_IFC_REG_FUSE_ANTI_ROLLBACK_DISABLE            0x300302c8\n  CLP_SOC_IFC_REG_FUSE_IDEVID_CERT_ATTR_0               0x300302cc\n  CLP_SOC_IFC_REG_FUSE_IDEVID_MANUF_HSM_ID_0            0x3003032c\n  CLP_SOC_IFC_REG_FUSE_LIFE_CYCLE                       0x3003033c\n  CLP_SOC_IFC_REG_INTERNAL_OBF_KEY_0                    0x30030600\n  CLP_SOC_IFC_REG_INTERNAL_ICCM_LOCK                    0x30030620\n  CLP_SOC_IFC_REG_INTERNAL_FW_UPDATE_RESET              0x30030624\n  CLP_SOC_IFC_REG_INTERNAL_FW_UPDATE_RESET_WAIT_CYCLES  0x30030628\n  CLP_SOC_IFC_REG_INTERNAL_NMI_VECTOR                   0x3003062c\n"
    },
    {
      "commit": "82a5a083de2c78b8cd472a4150d57a8c8e9bea9f",
      "tree": "53abd4dbfdc42896374cb8b3f6a1325c156f677d",
      "parents": [
        "9a9c32d4b664be49f173914ea434701ac1b68561"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Feb 09 16:26:54 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl: Relax default property requirements.\n\nThere\u0027s no need to error if a default property doesn\u0027t apply to\npreviously defined components.\n"
    },
    {
      "commit": "9a9c32d4b664be49f173914ea434701ac1b68561",
      "tree": "4512f20637765a03deba26920f5b1ff80597abd9",
      "parents": [
        "5d474b68a41b95f5d6efb3d6d653b796473dfc64"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Feb 07 15:27:29 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl: Add basic support for parameter definitions.\n"
    },
    {
      "commit": "5d474b68a41b95f5d6efb3d6d653b796473dfc64",
      "tree": "7c4790ec4f05da92c606016a9c1483b3482b8681",
      "parents": [
        "f90eda70362452f932acf4a1d04c9f3008885f73"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Mon Feb 06 16:02:23 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl: Support verilog-style `include keyword.\n"
    },
    {
      "commit": "f90eda70362452f932acf4a1d04c9f3008885f73",
      "tree": "71af845857d6e3a6c5a8c2e2083f93a327ce6dd4",
      "parents": [
        "3c349de5ebacd662a517131e31b12fdc5d23a869"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Jan 25 15:17:45 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Deduplicate register value types between modules.\n"
    },
    {
      "commit": "3c349de5ebacd662a517131e31b12fdc5d23a869",
      "tree": "1cc850770dd336d99efdb582f4019ca93d47d578",
      "parents": [
        "a78058ae5cba07b3acc54d5e11b98a96cfc84749"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Jan 19 17:01:50 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Add utility fn for replacing comments.\n"
    },
    {
      "commit": "a78058ae5cba07b3acc54d5e11b98a96cfc84749",
      "tree": "19f6e960ffacc9b09e273812db0e260f7c6b02cc",
      "parents": [
        "891b881d10a9bb01a22ec734839ee3af6fb3d942"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Jan 19 16:58:59 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Fix bug: missing ![no_std] in root module.\n"
    },
    {
      "commit": "891b881d10a9bb01a22ec734839ee3af6fb3d942",
      "tree": "3a9aa4503de261b43e818823b51c4de646e8d4a7",
      "parents": [
        "a334ade68f78e2ee6e90ad4186d92c2228727ae4"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Jan 12 15:49:11 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg_codegen::Options should implement Default().\n\nThis is necessary to make additions to this struct backwards-compatible.\n"
    },
    {
      "commit": "a334ade68f78e2ee6e90ad4186d92c2228727ae4",
      "tree": "241ae9171edf1bd43f0f1eca76f058a97053a98c",
      "parents": [
        "1032f7cd738a64642062549e7b9211e44bbc9c9c"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Wed Jan 18 16:50:04 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: Remove vestigal debug println.\n"
    },
    {
      "commit": "1032f7cd738a64642062549e7b9211e44bbc9c9c",
      "tree": "722450d1bef8dd23a816e541643abc3ec4278d28",
      "parents": [
        "3e3028b49a46b8e4652e3d11eceb56e7984a4825"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Fri Jan 13 14:30:45 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "ureg: cargo fmt\n"
    },
    {
      "commit": "3e3028b49a46b8e4652e3d11eceb56e7984a4825",
      "tree": "6353f524dcbf5049247ed59f27de9b2fa0d93d67",
      "parents": [
        "fe62048f7f635dac5373294859e4ec50a7cf56d0"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Jan 10 23:48:08 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Don\u0027t ignore names of systemrdl register typedefs.\n\nThis leads to better deduplicated register type names, as ureg doesn\u0027t\nneed to infer the name using heuristics. And these \"better\" names are\nnecessary with later versions rtl-caliptra to avoid terrible heuristic\nnames.\n"
    },
    {
      "commit": "fe62048f7f635dac5373294859e4ec50a7cf56d0",
      "tree": "00bee70ec10c3c3b8b9e6bc218cdde5ed9f24fe0",
      "parents": [
        "d17018ea8a366c2e8e6ec70385a62df2ef02c5b4"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Jan 10 23:00:47 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "systemrdl: support onreadtype and onwritetype.\n"
    },
    {
      "commit": "d17018ea8a366c2e8e6ec70385a62df2ef02c5b4",
      "tree": "2f0d39150e8114a1ed34f3b58b67a02bab095011",
      "parents": [
        "2011ac075929b04ebdf5e2f0173a7bc96c072760"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Tue Jan 10 22:59:47 2023 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Fix systemrdl typo: littlendian -\u003e littleendian\n"
    },
    {
      "commit": "2011ac075929b04ebdf5e2f0173a7bc96c072760",
      "tree": "195141f60dc139187ec2b1ba2fb18eaa6a3935fa",
      "parents": [
        "bf442b2b20875872059a26b6078a52ce01e1e730"
      ],
      "author": {
        "name": "Kor Nielsen",
        "email": "kor@google.com",
        "time": "Thu Dec 22 15:37:54 2022 -0800"
      },
      "committer": {
        "name": "Kor Nielsen",
        "email": "korn@xdas.com",
        "time": "Tue Mar 19 14:30:55 2024 -0700"
      },
      "message": "Add new register-related libraries to the repo.\n\ncaliptra-registers-generator (fw-caliptra/registers/bin/generator)\n\n  A binary that takes the .rdl files as input, parses them with\n  caliptra-systemrdl, uses caliptra-ureg-systemrdl to generate a ureg\n  schema, tweaks the schema a bit (renames, etc), then passes the schema\n  to caliptra_ureg_codegen to generate the register-access rust code.\n\ncaliptra-registers (fw-caliptra/registers)\n\n  The full set of types for accessing caliptra\n  registers (generated by caliptra-ureg-codegen)\n\ncaliptra-systemrdl (fw-caliptra/systemrdl)\n\n  A general purpose systemrdl parser library written in rust.\n\nureg (fw-caliptra/ureg)\n\n  General-purpose register traits and glue code; used by caliptra-registers.\n\nureg-schema (fw-caliptra/ureg/lib/schema)\n\n  Types for defining a schema of register blocks\n\nureg-codegen (fw-caliptra/ureg/lib/codegen)\n\n  Library for generating rust register types from ureg schema\n\nureg-systemrdl (fw-caliptra/ureg/systemrdl)\n\n  Library for generating ureg schema from a set\n  of .rdl files (uses caliptra-systemrdl)\n"
    },
    {
      "commit": "bf442b2b20875872059a26b6078a52ce01e1e730",
      "tree": "8da4391fce04b48ebc9cf63f055d959d110a937e",
      "parents": [
        "affaba8b5e3e2dd95fdbb67246046242fbce97f7"
      ],
      "author": {
        "name": "Lou Ferraro",
        "email": "112569056+FerralCoder@users.noreply.github.com",
        "time": "Tue Oct 03 15:06:11 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 03 13:06:11 2023 -0700"
      },
      "message": "Create Security and Response policy (#1)\n\n"
    },
    {
      "commit": "affaba8b5e3e2dd95fdbb67246046242fbce97f7",
      "tree": "92af1a2f25fdeeca84e124bdd1a36647d5621b34",
      "parents": [],
      "author": {
        "name": "mcockrell-google",
        "email": "mcockrell@google.com",
        "time": "Tue Feb 14 10:53:58 2023 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 14 10:53:58 2023 -0800"
      },
      "message": "Initial commit"
    }
  ]
}
