genode/repos/base-hw/src/core/imx53/trustzone/pic.h

65 lines
1.1 KiB
C++

/*
* \brief Programmable interrupt controller for core
* \author Stefan Kalkowski
* \date 2012-10-24
*/
/*
* Copyright (C) 2012-2013 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _IMX53__PIC_H_
#define _IMX53__PIC_H_
/* Genode includes */
#include <util/mmio.h>
/* core includes */
#include <pic_base.h>
namespace Imx53
{
using namespace Genode;
/**
* Programmable interrupt controller for core
*/
class Pic : public Pic_base
{
public:
Pic()
{
for (unsigned i = 0; i < NR_OF_IRQ; i++) {
write<Intsec::Nonsecure>(0, i);
write<Priority>(0, i);
}
write<Priomask::Mask>(0xff);
}
void unsecure(unsigned const i)
{
if (i < NR_OF_IRQ) {
write<Intsec::Nonsecure>(1, i);
write<Priority>(0x80, i);
}
}
void secure(unsigned const i)
{
if (i < NR_OF_IRQ) {
write<Intsec::Nonsecure>(0, i);
write<Priority>(0, i);
}
}
};
}
namespace Kernel { class Pic : public Imx53::Pic { }; }
#endif /* _IMX53__PIC_H_ */