/*
 * Copyright (C) 2014, Samsung Electronics Co., Ltd.
 *
 * Custom SMC Handler for Exynos 5433
 * Read CP15 Registers
 */

#include "handler.h"

/*
 * SMC FID to read CP15 register on EL3 level
 */
#define TZOS_SMC_READ_SYSREG	    0xB2000012

#if defined(__aarch64__)			
uint32_t get_ttbr1(void)
{
    uint32_t ret_val;
    __asm__ __volatile__ (              \
    "mrs %0, TTBR1_EL1\n\t"     \
    : "=r" (ret_val)                    \
    ::);

    return ret_val;
}
#else
uint32_t get_ttbr1(void)
{
    uint32_t ret_val;
    __asm__ __volatile__ (              \
    ".arch_extension sec\n\t"           \
    "mrc p15, 0, %0, c2, c0, 1\n\t"     \
    : "=r" (ret_val)                    \
    ::);

    return ret_val;
}
#endif

uint32_t get_el3_reg(int index)
{
    uint32_t val = SMC_ARG1(TZOS_SMC_READ_SYSREG, index);
    return val;
}
