)]}'
{
  "commit": "ebbe2cf854ea0eb147b7a78445472353fe2e5dc3",
  "tree": "d17814949e30ed540daa9d9394cbf135286d19da",
  "parents": [
    "1431b65110a294720b75af2f80b0f6465220a90f"
  ],
  "author": {
    "name": "Gaurav-Aggarwal-AWS",
    "email": "33462878+aggarg@users.noreply.github.com",
    "time": "Thu Nov 05 09:26:56 2020 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Nov 05 09:26:56 2020 -0800"
  },
  "message": "Ensure interrupts are enabled at first task start (#214)\n\nCritical sections in FreeRTOS are implemented using the following two\r\nfunctions:\r\n\r\nvoid vPortEnterCritical( void )\r\n{\r\n    portDISABLE_INTERRUPTS();\r\n    uxCriticalNesting++;\r\n}\r\n\r\nvoid vPortExitCritical( void )\r\n{\r\n    uxCriticalNesting--;\r\n\r\n    if( uxCriticalNesting \u003d\u003d 0 )\r\n    {\r\n        portENABLE_INTERRUPTS();\r\n    }\r\n}\r\n\r\nuxCriticalNesting is initialized to a large value at the start and set\r\nto zero when the scheduler is started (xPortStartScheduler). As a\r\nresult, before the scheduler is started, a pair of enter/exit critical\r\nsection will leave the interrupts disabled because uxCriticalNesting\r\nwill not reach zero in the vPortExitCritical function. This is done to\r\nensure that the interrupts remain disabled from the time first FreeRTOS\r\nAPI is called to the time when the scheduler is started. The scheduler\r\nstarting code is expected to enure that interrupts are enabled before\r\nthe first task starts executing.\r\n\r\nCortex-M33 ports were not enabling interrupts before starting the first\r\ntask and as a result, the first task was started with interrupts\r\ndisabled. This PR fixes the issue by ensuring that interrupts are\r\nenabled before the first task is started.\r\n\r\nSigned-off-by: Gaurav Aggarwal \u003caggarg@amazon.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dcb7d855428622740cfbf37fda975467ddf2f6fa",
      "old_mode": 33188,
      "old_path": "portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/portasm.c",
      "new_id": "d520828ff1f7aef2f94c2d0452c6c626effbe6ca",
      "new_mode": 33188,
      "new_path": "portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/portasm.c"
    },
    {
      "type": "modify",
      "old_id": "6038c5734253144c89b0e25bb33236ab4fb804ee",
      "old_mode": 33188,
      "old_path": "portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/portasm.c",
      "new_id": "58652c8e75fc42154343b598b6421122fb01e89f",
      "new_mode": 33188,
      "new_path": "portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/portasm.c"
    },
    {
      "type": "modify",
      "old_id": "35d644fc5237b2b53559cf53c315a78b8a13798d",
      "old_mode": 33188,
      "old_path": "portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/portasm.s",
      "new_id": "d4c7be119516e21ebc1e7148bb837356543747e0",
      "new_mode": 33188,
      "new_path": "portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/portasm.s"
    },
    {
      "type": "modify",
      "old_id": "3215f82e5a4a5fe320cf69cbe59aed1fb07a33a9",
      "old_mode": 33188,
      "old_path": "portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/portasm.s",
      "new_id": "702eec7360e02416fe6c917e5beff7b05825f3c6",
      "new_mode": 33188,
      "new_path": "portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/portasm.s"
    },
    {
      "type": "modify",
      "old_id": "61a9b2d21a65c3d29ddc9ee670590ede4a7b895f",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM23/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM23/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "1923a9f39d8137117c19e211cc59a5c44acf4967",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM23_NTZ/non_secure/port.c",
      "new_id": "fd6d46f13a3cf16adefd06e4a97fc4b8a2e41995",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM23_NTZ/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "caa9f7912e61daf31c75780f8e7ec36c91ef8219",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM33/non_secure/port.c",
      "new_id": "fd6d46f13a3cf16adefd06e4a97fc4b8a2e41995",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM33/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "dcb7d855428622740cfbf37fda975467ddf2f6fa",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM33/non_secure/portasm.c",
      "new_id": "d520828ff1f7aef2f94c2d0452c6c626effbe6ca",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM33/non_secure/portasm.c"
    },
    {
      "type": "modify",
      "old_id": "60733484bc6b4eb3806cf2b7dd5e1e1552ca2e5c",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM33_NTZ/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM33_NTZ/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "6038c5734253144c89b0e25bb33236ab4fb804ee",
      "old_mode": 33188,
      "old_path": "portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c",
      "new_id": "58652c8e75fc42154343b598b6421122fb01e89f",
      "new_mode": 33188,
      "new_path": "portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c"
    },
    {
      "type": "modify",
      "old_id": "eef952d551da292e660e15cb01197462b5d1716a",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM23/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM23/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "eef952d551da292e660e15cb01197462b5d1716a",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM23_NTZ/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM23_NTZ/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "eef952d551da292e660e15cb01197462b5d1716a",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM33/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM33/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "35d644fc5237b2b53559cf53c315a78b8a13798d",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM33/non_secure/portasm.s",
      "new_id": "d4c7be119516e21ebc1e7148bb837356543747e0",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM33/non_secure/portasm.s"
    },
    {
      "type": "modify",
      "old_id": "eef952d551da292e660e15cb01197462b5d1716a",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM33_NTZ/non_secure/port.c",
      "new_id": "1fcfb8fdf923cf487e06da78339f0a1dc12f011e",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM33_NTZ/non_secure/port.c"
    },
    {
      "type": "modify",
      "old_id": "3215f82e5a4a5fe320cf69cbe59aed1fb07a33a9",
      "old_mode": 33188,
      "old_path": "portable/IAR/ARM_CM33_NTZ/non_secure/portasm.s",
      "new_id": "702eec7360e02416fe6c917e5beff7b05825f3c6",
      "new_mode": 33188,
      "new_path": "portable/IAR/ARM_CM33_NTZ/non_secure/portasm.s"
    }
  ]
}
