cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/realmode/rm/wakemain.c

// SPDX-License-Identifier: GPL-2.0
#include "wakeup.h"
#include "boot.h"


static void udelay(int loops) { while (loops--) io_delay(); /* Approximately 1 us */ }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Machek18100.00%1100.00%
Total18100.00%1100.00%


static void beep(unsigned int hz) { u8 enable; if (!hz) { enable = 0x00; /* Turn off speaker */ } else { u16 div = 1193181/hz; outb(0xb6, 0x43); /* Ctr 2, squarewave, load, binary */ io_delay(); outb(div, 0x42); /* LSB of counter */ io_delay(); outb(div >> 8, 0x42); /* MSB of counter */ io_delay(); enable = 0x03; /* Turn on speaker */ } inb(0x61); /* Dummy read of System Control Port B */ io_delay(); outb(enable, 0x61); /* Enable timer 2 output to speaker */ io_delay(); }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Machek95100.00%1100.00%
Total95100.00%1100.00%

#define DOT_HZ 880 #define DASH_HZ 587 #define US_PER_DOT 125000 /* Okay, this is totally silly, but it's kind of fun. */
static void send_morse(const char *pattern) { char s; while ((s = *pattern++)) { switch (s) { case '.': beep(DOT_HZ); udelay(US_PER_DOT); beep(0); udelay(US_PER_DOT); break; case '-': beep(DASH_HZ); udelay(US_PER_DOT * 3); beep(0); udelay(US_PER_DOT); break; default: /* Assume it's a space */ udelay(US_PER_DOT * 3); break; } } }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Machek92100.00%1100.00%
Total92100.00%1100.00%


void main(void) { /* Kill machine if structures are wrong */ if (wakeup_header.real_magic != 0x12345678) while (1) ; if (wakeup_header.realmode_flags & 4) send_morse("...-"); if (wakeup_header.realmode_flags & 1) asm volatile("lcallw $0xc000,$3"); if (wakeup_header.realmode_flags & 2) { /* Need to call BIOS */ probe_cards(0); set_mode(wakeup_header.video_mode); } }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Machek68100.00%1100.00%
Total68100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Pavel Machek29299.66%150.00%
Greg Kroah-Hartman10.34%150.00%
Total293100.00%2100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.