fail_ne %r2, 0x0000000050000000
;; or
- or %r2, 0xdeadbeef
+ or %r2, -559038737 ; 0xdeadbeef
fail_ne %r2, 0xffffffffdeadbeef ; 0xdeadbeef gets sign extended
lddw %r1, 0xdead00000000beef
lddw %r2, 0x0000123456780000
fail_ne %r1, 0xdead12345678beef
;; lsh
- mov %r1, 0xdeadbeef
+ mov %r1, -559038737 ; 0xdeadbeef
lsh %r1, 11
fail_ne %r1, 0xfffffef56df77800 ; because deadbeef gets sign ext.
mov %r2, 21
lsh32 %r1, 4 ; r1 <<= 4 (r1 = 0xf0)
mov32 %r2, 24 ; r2 = 24
lsh32 %r1, %r2
- fail_ne32 %r1, 0xf0000000
+ fail_ne32 %r1, -268435456 ; 0xf0000000
;; rsh (right logical shift)
rsh32 %r1, 2
;; arsh (right arithmetic shift)
arsh32 %r1, 1
- or32 %r1, 0x80000000
+ or32 %r1, -2147483648 ; 0x80000000
mov32 %r2, 3
arsh32 %r1, %r2
fail_ne %r1, 0x00000000F0000003
;; xor
xor32 %r1, %r2
fail_ne32 %r1, 4
- xor32 %r1, 0xF000000F
+ xor32 %r1, -268435441 ; 0xF000000F
fail_ne %r1, 0xF000000B ; Note: check for (bad) sign-extend
xor32 %r1, %r1
fail_ne %r1, 0
;; Write the value 0x7eadbeef into memory at 0x2004
;; i.e. offset 4 within the data buffer pointed to by
;; ((struct sk_buff *)r6)->data
- stw [%r6+0x1004], 0xdeadbeef
+ stw [%r6+0x1004], 0x0eadbeef
;; Now load data[4] into r0 using the ldabsw instruction
ldabsw 0x4
;; ...and compare to what we expect
- fail_ne32 %r0, 0xdeadbeef
+ fail_ne32 %r0, 0x0eadbeef
;; Repeat for a half-word (2-bytes)
sth [%r6+0x1008], 0x1234
;; Now, we do the same for the indirect loads
mov %r7, 0x100
- stw [%r6+0x1100], 0xfeedbeef
+ stw [%r6+0x1100], 0x0eedbeef
ldindw %r7, 0x0
- fail_ne32 %r0, 0xfeedbeef
+ fail_ne32 %r0, 0x0eedbeef
;; half-word
sth [%r6+0x1104], 0x6789
stb [%r2+16], 0x5a
sth [%r2+18], 0xcafe
- stw [%r2+20], 0xbeefface
+ stw [%r2+20], -1091568946 ; 0xbeefface
stdw [%r2+24], 0x7eadbeef
ldxb %r1, [%r2+16]
mov %r2, -1
fail_ne %r2, 0xffffffffffffffff
- mov %r3, 0x80000000
+ mov %r3, -2147483648 ; 0x80000000
;; should NOT sign extend
mov32 %r4, %r3