Consider the following implementation of a spinlock semaphore used with a round-robin preemptive scheduler
![1253_60f72f50-787c-4d98-8e42-88a639d85204.png](https://secure.tutorsglobe.com/CMSImages/1253_60f72f50-787c-4d98-8e42-88a639d85204.png)
a) The compiler generated this code for OS_Signal
![2134_66a65980-0b19-4598-b0ad-14c6ea7a37ef.png](https://secure.tutorsglobe.com/CMSImages/2134_66a65980-0b19-4598-b0ad-14c6ea7a37ef.png)
Are there any critical sections in OS_Signal? That is, can two threads both call OS_ Signal? Justify your answer.
b) Design a new op-code for the 9S12, and use it to rewrite OS_Wait so the spin lock semaphore can be executed without critical sections and without disabling interrupts. Be VERY specific about what the new instruction does (e.g., addressing modes, condition code bits). The 16-bit pointer, semaPt, will be in Register D when OS_Wait is called.