1
0
mirror of https://github.com/antonblanchard/microwatt.git synced 2026-01-13 23:26:59 +00:00
Jordan Niethe 737ebd92f5 tests: Add tests for the PVR
The PVR is a privileged read-only SPR. Test reading and writing in both
supervisor and problem state. In supervisor state reading returns
microwatt's assigned PVR number and writing is a noop. In problem state
both reading and writing cause privileged instruction interrupts.

Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
2020-07-08 20:57:21 +10:00

63 lines
920 B
C

#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include "console.h"
#define TEST "Test "
#define PASS "PASS\n"
#define FAIL "FAIL\n"
#define PVR_MICROWATT 0x00630000
extern long test_addpcis_1(void);
extern long test_addpcis_2(void);
extern long test_mfpvr(void);
extern long test_mtpvr(void);
// i < 100
void print_test_number(int i)
{
puts(TEST);
putchar(48 + i/10);
putchar(48 + i%10);
putchar(':');
}
int main(void)
{
int fail = 0;
console_init();
print_test_number(1);
if (test_addpcis_1() != 0) {
fail = 1;
puts(FAIL);
} else
puts(PASS);
print_test_number(2);
if (test_addpcis_2() != 0) {
fail = 1;
puts(FAIL);
} else
puts(PASS);
print_test_number(3);
if (test_mfpvr() != PVR_MICROWATT) {
fail = 1;
puts(FAIL);
} else
puts(PASS);
print_test_number(4);
if (test_mtpvr() != PVR_MICROWATT) {
fail = 1;
puts(FAIL);
} else
puts(PASS);
return fail;
}