Files
zsa_qmk_firmware/quantum/midi/bytequeue/interrupt_setting.c
T

48 lines
1.4 KiB
C
Raw Normal View History

2019-08-30 11:19:03 -07:00
// Copyright 20010 Alex Norman
// writen by Alex Norman
2015-08-20 00:42:28 -04:00
//
2019-08-30 11:19:03 -07:00
// This file is part of avr-bytequeue.
2015-08-20 00:42:28 -04:00
//
2019-08-30 11:19:03 -07:00
// avr-bytequeue is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
2015-08-20 00:42:28 -04:00
//(at your option) any later version.
//
2019-08-30 11:19:03 -07:00
// avr-bytequeue is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
2015-08-20 00:42:28 -04:00
//
2019-08-30 11:19:03 -07:00
// You should have received a copy of the GNU General Public License
// along with avr-bytequeue. If not, see <http://www.gnu.org/licenses/>.
2015-08-20 00:42:28 -04:00
2019-08-30 11:19:03 -07:00
// AVR specific code
// should be able to port to other systems by simply providing chip specific
// implementations of the typedef and these functions
2015-08-20 00:42:28 -04:00
#include "interrupt_setting.h"
#if defined(__AVR__)
2019-08-30 11:19:03 -07:00
# include <avr/interrupt.h>
2015-08-20 00:42:28 -04:00
interrupt_setting_t store_and_clear_interrupt(void) {
2019-08-30 11:19:03 -07:00
uint8_t sreg = SREG;
cli();
return sreg;
2015-08-20 00:42:28 -04:00
}
void restore_interrupt_setting(interrupt_setting_t setting) {
SREG = setting;
}
#elif defined(__arm__)
# include <ch.h>
interrupt_setting_t store_and_clear_interrupt(void) {
2019-08-30 11:19:03 -07:00
chSysLock();
return 0;
}
void restore_interrupt_setting(interrupt_setting_t setting) {
chSysUnlock();
}
#endif