[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1906295] [NEW] Implementation of exclusive monitor in ARM
From: |
JIANG Muhui |
Subject: |
[Bug 1906295] [NEW] Implementation of exclusive monitor in ARM |
Date: |
Mon, 30 Nov 2020 18:36:22 -0000 |
Public bug reported:
Hi
I refer to the implementation of exclusive monitor in ARM32. For
instruction like STREX Rx,Ry,[Rz], we need to check whether the address
[Rz] is in exclusive state. If not, we set the value Rx as 1 without
doing the store operation. However, I noticed that QEMU will not check
whether the address that Rz points to is a legal address or not. If the
value of Rz is 0x0 but it is not in exclusive state. QEMU will set Rx as
1 and continue to execute the following instructions.
However, physical devices will check the value of Rz. If Rz is an illegal
address (e.g., 0x0), a SIGSEGV signal will be raised even the address is not in
exclusive state. I searched many documentation about ARM and it seems that
manual of ARM specification does not specify the implementation of exclusive
monitor in detail. I am not sure which one is the right behavior.
Should QEMU add this check? This might not be a mistake. However, should it be
better if QEMU has the same behavior as a physical device? Feel free if you
need a testcase. Many thanks
Regards
Muhui
** Affects: qemu
Importance: Undecided
Status: New
** Summary changed:
- Improper implementation of exclusive monitor in ARM
+ Implementation of exclusive monitor in ARM
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1906295
Title:
Implementation of exclusive monitor in ARM
Status in QEMU:
New
Bug description:
Hi
I refer to the implementation of exclusive monitor in ARM32. For
instruction like STREX Rx,Ry,[Rz], we need to check whether the
address [Rz] is in exclusive state. If not, we set the value Rx as 1
without doing the store operation. However, I noticed that QEMU will
not check whether the address that Rz points to is a legal address or
not. If the value of Rz is 0x0 but it is not in exclusive state. QEMU
will set Rx as 1 and continue to execute the following instructions.
However, physical devices will check the value of Rz. If Rz is an illegal
address (e.g., 0x0), a SIGSEGV signal will be raised even the address is not in
exclusive state. I searched many documentation about ARM and it seems that
manual of ARM specification does not specify the implementation of exclusive
monitor in detail. I am not sure which one is the right behavior.
Should QEMU add this check? This might not be a mistake. However, should it
be better if QEMU has the same behavior as a physical device? Feel free if you
need a testcase. Many thanks
Regards
Muhui
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1906295/+subscriptions
- [Bug 1906295] [NEW] Implementation of exclusive monitor in ARM,
JIANG Muhui <=