Browse Source
Add a small test to prevent regressions. Userspace runs in primary mode, so LAE should always set the access register to 0. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-ID: <20240111092328.929421-3-iii@linux.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>coverity
committed by
Thomas Huth
2 changed files with 32 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||
/*
|
|||
* Test the LOAD ADDRESS EXTENDED instruction. |
|||
* |
|||
* SPDX-License-Identifier: GPL-2.0-or-later |
|||
*/ |
|||
#include <assert.h> |
|||
#include <stdlib.h> |
|||
|
|||
int main(void) |
|||
{ |
|||
unsigned long long ar = -1, b2 = 100000, r, x2 = 500; |
|||
/*
|
|||
* Hardcode the register number, since clang does not allow using %rN in |
|||
* place of %aN. |
|||
*/ |
|||
register unsigned long long r2 __asm__("2"); |
|||
int tmp; |
|||
|
|||
asm("ear %[tmp],%%a2\n" |
|||
"lae %%r2,42(%[x2],%[b2])\n" |
|||
"ear %[ar],%%a2\n" |
|||
"sar %%a2,%[tmp]" |
|||
: [tmp] "=&r" (tmp), "=&r" (r2), [ar] "+r" (ar) |
|||
: [b2] "r" (b2), [x2] "r" (x2) |
|||
: "memory"); |
|||
r = r2; |
|||
assert(ar == 0xffffffff00000000ULL); |
|||
assert(r == 100542); |
|||
|
|||
return EXIT_SUCCESS; |
|||
} |
|||
Loading…
Reference in new issue