Add a build time config option to remove support for RTC timer interrupts along with the associated bios calls requiring that support.
Signed-off-by: Kevin O'Connor kevin@koconnor.net --- src/Kconfig | 9 +++++++++ src/clock.c | 13 ++++++++++++- src/hw/rtc.c | 6 ++++++ src/stacks.c | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig index 6256242..56a1b2f 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -299,6 +299,15 @@ menu "Hardware support" default y help Support parallel ports. This also enables int 17 parallel port calls. + config RTC_TIMER + bool "Real Time Clock (RTC) scheduling" + default y + help + Support MC146818 Real Time Clock chip timer + interrupts. This also enables int 1583 and int 1586 calls. + + Disabling this support does not disable access to the RTC + cmos registers.
config USE_SMM depends on QEMU diff --git a/src/clock.c b/src/clock.c index ee2b53f..2bb5209 100644 --- a/src/clock.c +++ b/src/clock.c @@ -56,7 +56,8 @@ clock_setup(void) }
enable_hwirq(0, FUNC16(entry_08)); - enable_hwirq(8, FUNC16(entry_70)); + if (CONFIG_RTC_TIMER) + enable_hwirq(8, FUNC16(entry_70)); }
@@ -374,6 +375,10 @@ clear_usertimer(void) void handle_1586(struct bregs *regs) { + if (!CONFIG_RTC_TIMER) { + set_code_unimplemented(regs, RET_EUNSUPPORTED); + return; + } // Use the rtc to wait for the specified time. u8 statusflag = 0; u32 count = (regs->cx << 16) | regs->dx; @@ -417,6 +422,10 @@ handle_1583XX(struct bregs *regs) void handle_1583(struct bregs *regs) { + if (!CONFIG_RTC_TIMER) { + handle_1583XX(regs); + return; + } switch (regs->al) { case 0x00: handle_158300(regs); break; case 0x01: handle_158301(regs); break; @@ -430,6 +439,8 @@ handle_1583(struct bregs *regs) void VISIBLE16 handle_70(void) { + if (!CONFIG_RTC_TIMER) + return; debug_isr(DEBUG_ISR_70);
// Check which modes are enabled and have occurred. diff --git a/src/hw/rtc.c b/src/hw/rtc.c index 628d542..570a3ad 100644 --- a/src/hw/rtc.c +++ b/src/hw/rtc.c @@ -62,6 +62,8 @@ rtc_updating(void) void rtc_setup(void) { + if (!CONFIG_RTC_TIMER) + return; rtc_write(CMOS_STATUS_A, 0x26); // 32,768Khz src, 976.5625us updates rtc_mask(CMOS_STATUS_B, ~RTC_B_DSE, RTC_B_24HR); rtc_read(CMOS_STATUS_C); @@ -73,6 +75,8 @@ int RTCusers VARLOW; void rtc_use(void) { + if (!CONFIG_RTC_TIMER) + return; int count = GET_LOW(RTCusers); SET_LOW(RTCusers, count+1); if (count) @@ -84,6 +88,8 @@ rtc_use(void) void rtc_release(void) { + if (!CONFIG_RTC_TIMER) + return; int count = GET_LOW(RTCusers); SET_LOW(RTCusers, count-1); if (count != 1) diff --git a/src/stacks.c b/src/stacks.c index 0c5f79a..e67aeb6 100644 --- a/src/stacks.c +++ b/src/stacks.c @@ -574,7 +574,7 @@ thread_setup(void) int threads_during_optionroms(void) { - return CONFIG_THREADS && ThreadControl == 2 && in_post(); + return CONFIG_THREADS && CONFIG_RTC_TIMER && ThreadControl == 2 && in_post(); }
// Switch to next thread stack.
Dear Kevin,
Am Montag, den 17.08.2015, 12:23 -0400 schrieb Kevin O'Connor:
Add a build time config option to remove support for RTC timer interrupts along with the associated bios calls requiring that support.
Signed-off-by: Kevin O'Connor kevin@koconnor.net
src/Kconfig | 9 +++++++++ src/clock.c | 13 ++++++++++++- src/hw/rtc.c | 6 ++++++ src/stacks.c | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig index 6256242..56a1b2f 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -299,6 +299,15 @@ menu "Hardware support" default y help Support parallel ports. This also enables int 17 parallel port calls.
- config RTC_TIMER
bool "Real Time Clock (RTC) scheduling"
default y
help
Support MC146818 Real Time Clock chip timer
interrupts. This also enables int 1583 and int 1586 calls.
Disabling this support does not disable access to the RTC
cmos registers.
[…]
what is the use case for this option, that means, what are the circumstances that users might disable it?
The size and speed benefit is probably minimal.
Thanks,
Paul
On Mon, Aug 17, 2015 at 11:32:18PM +0200, Paul Menzel wrote:
Am Montag, den 17.08.2015, 12:23 -0400 schrieb Kevin O'Connor:
Add a build time config option to remove support for RTC timer interrupts along with the associated bios calls requiring that support.
Signed-off-by: Kevin O'Connor kevin@koconnor.net
src/Kconfig | 9 +++++++++ src/clock.c | 13 ++++++++++++- src/hw/rtc.c | 6 ++++++ src/stacks.c | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig index 6256242..56a1b2f 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -299,6 +299,15 @@ menu "Hardware support" default y help Support parallel ports. This also enables int 17 parallel port calls.
- config RTC_TIMER
bool "Real Time Clock (RTC) scheduling"
default y
help
Support MC146818 Real Time Clock chip timer
interrupts. This also enables int 1583 and int 1586 calls.
Disabling this support does not disable access to the RTC
cmos registers.
[…]
what is the use case for this option, that means, what are the circumstances that users might disable it?
Thanks for reviewing.
The main use case is the follow up "baytrail" patch series. On some baytrail hardware, the RTC irq (as with other legacy irqs) doesn't work and so this patch allows it to be disabled. I separated this patch out from that series because it could be useful on its own.
-Kevin