Page MenuHomeFreeBSD

arm64/disassem.c: Add shifted register definitions with ror
ClosedPublic

Authored by koliagogsadze_gmail.com on Jun 1 2023, 9:20 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mar 19 2024, 4:21 AM
Unknown Object (File)
Mar 19 2024, 2:53 AM
Unknown Object (File)
Mar 9 2024, 7:18 PM
Unknown Object (File)
Jan 5 2024, 10:29 PM
Unknown Object (File)
Dec 27 2023, 10:54 PM
Unknown Object (File)
Dec 25 2023, 5:15 PM
Unknown Object (File)
Dec 20 2023, 2:50 AM
Unknown Object (File)
Dec 12 2023, 8:39 AM
Subscribers

Details

Summary

Add disassembly support for the following shifted register instructions:

  • mvn
  • orn
  • orr
  • and
  • ands
  • bic
  • bics
  • eon
  • eor
  • tst

According to Arm64 documenation, operational pseuducode of shifted
register instruction must return UNDEFINED if shift type is RESERVED
('11'). Hence, removed "rsv" from shift_2 array and added "ror".
In case of shift type is 4 and this type is RESERVED,
we will return undefined.

Test Plan

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 51851
Build 48742: arc lint + arc unit

Event Timeline

refs:
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/MVN--Bitwise-NOT--an-alias-of-ORN--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/ORN--shifted-register---Bitwise-OR-NOT--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/ORR--shifted-register---Bitwise-OR--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/AND--shifted-register---Bitwise-AND--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/ANDS--shifted-register---Bitwise-AND--shifted-register---setting-flags-
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/BIC--shifted-register---Bitwise-Bit-Clear--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/BICS--shifted-register---Bitwise-Bit-Clear--shifted-register---setting-flags-
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/EON--shifted-register---Bitwise-Exclusive-OR-NOT--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/EOR--shifted-register---Bitwise-Exclusive-OR--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/TST--shifted-register---Test--shifted-register---an-alias-of-ANDS--shifted-register--
https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/MOV--register---Move--register---an-alias-of-ORR--shifted-register--?lang=en

sys/arm64/arm64/disassem.c
492

I think it is slightly better named as has_shift_ror.

This revision is now accepted and ready to land.Jun 9 2023, 4:24 PM

Changed is_shift_ror to has_shift_ror and fixed check shift type.
For testing RESERVED case (shift == 3) I added instruction manually

.macro ADDS_SHIFT_RSV_64 xd, xn, xm, shift, imm
	.inst	((0b10101011 << 24) | (\shift << 22) | \
		(0b0 << 21) 	    | (\xm << 16)    | \
		(\imm << 10)	    | (\xn << 5)     | \
		(\xd << 0))
.endm

# adds	x0, x1, x3, RESERVED #1
ADDS_SHIFT_RSV_64 0, 1, 3, 3, 1

ref: https://github.com/toor1245/freebsd-src/pull/2/files

This revision now requires review to proceed.Jun 11 2023, 12:44 AM
This revision is now accepted and ready to land.Jun 17 2023, 3:30 PM