| /* | |
| * Test the TEST AND SET instruction. | |
| * | |
| * SPDX-License-Identifier: GPL-2.0-or-later | |
| */ | |
| #include <assert.h> | |
| #include <stdlib.h> | |
| static int ts(char *p) | |
| { | |
| int cc; | |
| asm("ts %[p]\n" | |
| "ipm %[cc]" | |
| : [cc] "=r" (cc) | |
| , [p] "+Q" (*p) | |
| : : "cc"); | |
| return (cc >> 28) & 3; | |
| } | |
| int main(void) | |
| { | |
| char c; | |
| c = 0x80; | |
| assert(ts(&c) == 1); | |
| assert(c == 0xff); | |
| c = 0x7f; | |
| assert(ts(&c) == 0); | |
| assert(c == 0xff); | |
| return EXIT_SUCCESS; | |
| } |