1645d3cbeSSu Hang /* 2645d3cbeSSu Hang * QTest testcase for the Intel Hexadecimal Object File Loader 3645d3cbeSSu Hang * 4645d3cbeSSu Hang * Authors: 5645d3cbeSSu Hang * Su Hang <suhang16@mails.ucas.ac.cn> 2018 6645d3cbeSSu Hang * 7645d3cbeSSu Hang * This work is licensed under the terms of the GNU GPL, version 2 or later. 8645d3cbeSSu Hang * See the COPYING file in the top-level directory. 9645d3cbeSSu Hang * 10645d3cbeSSu Hang */ 11645d3cbeSSu Hang 12645d3cbeSSu Hang #include "qemu/osdep.h" 13*907b5105SMarc-André Lureau #include "libqtest.h" 14645d3cbeSSu Hang 15645d3cbeSSu Hang /* Load 'test.hex' and verify that the in-memory contents are as expected. 16645d3cbeSSu Hang * 'test.hex' is a memory test pattern stored in Hexadecimal Object 17645d3cbeSSu Hang * format. It loads at 0x10000 in RAM and contains values from 0 through 18645d3cbeSSu Hang * 255. 19645d3cbeSSu Hang */ 20645d3cbeSSu Hang static void hex_loader_test(void) 21645d3cbeSSu Hang { 22645d3cbeSSu Hang unsigned int i; 23645d3cbeSSu Hang const unsigned int base_addr = 0x00010000; 24645d3cbeSSu Hang 25645d3cbeSSu Hang QTestState *s = qtest_initf( 26739fc387SPeter Maydell "-M vexpress-a9 -device loader,file=tests/data/hex-loader/test.hex"); 27645d3cbeSSu Hang 28645d3cbeSSu Hang for (i = 0; i < 256; ++i) { 29645d3cbeSSu Hang uint8_t val = qtest_readb(s, base_addr + i); 30645d3cbeSSu Hang g_assert_cmpuint(i, ==, val); 31645d3cbeSSu Hang } 32645d3cbeSSu Hang qtest_quit(s); 33645d3cbeSSu Hang } 34645d3cbeSSu Hang 35645d3cbeSSu Hang int main(int argc, char **argv) 36645d3cbeSSu Hang { 37645d3cbeSSu Hang int ret; 38645d3cbeSSu Hang 39645d3cbeSSu Hang g_test_init(&argc, &argv, NULL); 40645d3cbeSSu Hang 41645d3cbeSSu Hang qtest_add_func("/tmp/hex_loader", hex_loader_test); 42645d3cbeSSu Hang ret = g_test_run(); 43645d3cbeSSu Hang 44645d3cbeSSu Hang return ret; 45645d3cbeSSu Hang } 46