11a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks/* 21a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Copyright (C) 2017 The Android Open Source Project 31a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * 41a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License"); 51a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * you may not use this file except in compliance with the License. 61a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * You may obtain a copy of the License at 71a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * 81a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * http://www.apache.org/licenses/LICENSE-2.0 91a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * 101a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Unless required by applicable law or agreed to in writing, software 111a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS, 121a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * See the License for the specific language governing permissions and 141a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * limitations under the License. 151a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks */ 161a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 171a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks#include "shared.rsh" 181a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 191a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksint *ain; 201a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksint *aout; 211a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksint dimX; 221a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksstatic bool failed = false; 231a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 241a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksvoid init_vars(int *out) { 251a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *out = 7; 261a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks} 271a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 281a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 291a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksint RS_KERNEL root(int ain, uint32_t x) { 301a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks _RS_ASSERT(ain == 7); 311a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks return ain + x; 321a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks} 331a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 341a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksstatic bool test_root_output() { 351a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks bool failed = false; 361a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks int i; 371a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 381a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks for (i = 0; i < dimX; i++) { 391a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks _RS_ASSERT(aout[i] == (i + ain[i])); 401a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks } 411a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 421a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks if (failed) { 431a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks rsDebug("test_root_output FAILED", 0); 441a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks } 451a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks else { 461a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks rsDebug("test_root_output PASSED", 0); 471a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks } 481a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 491a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks return failed; 501a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks} 511a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 521a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksvoid verify_root() { 531a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks failed |= test_root_output(); 541a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks} 551a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks 561a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksvoid kernel_test() { 571a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks if (failed) { 581a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks rsSendToClientBlocking(RS_MSG_TEST_FAILED); 591a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks } 601a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks else { 611a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks rsSendToClientBlocking(RS_MSG_TEST_PASSED); 621a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks } 631a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks} 64