void __delay(unsigned long cycles) { unsigned long long start = __vmgettime(); while ((__vmgettime() - start) < cycles) cpu_relax(); }
void __udelay(unsigned long usecs) { unsigned long long start = __vmgettime(); unsigned long long finish = (pcycle_freq_mhz * usecs) - fudgefactor; while ((__vmgettime() - start) < finish) cpu_relax(); }
void __udelay(unsigned long usecs) { unsigned long long start = __vmgettime(); unsigned long long finish = (pcycle_freq_mhz * usecs) - fudgefactor; while ((__vmgettime() - start) < finish) cpu_relax(); /* not sure how this improves readability */ }
void __init setup_arch(char **cmdline_p) { char *p = &external_cmdline_buffer; my_out("Hello from Hexagon Linux 1\n"); my_out("Hello from Hexagon Linux 2\n"); /* * These will eventually be pulled in via either some hypervisor * or devicetree description. Hardwiring for now. */ pcycle_freq_mhz = 600; thread_freq_mhz = 100; sleep_clk_freq = 32000; my_out("600TEST 1: %llu\n", __vmgettime()); my_out("600TEST 2: %llu\n", __vmgettime()); //*(volatile uint32_t*)0xA900080C |= 0x20; /* * Set up event bindings to handle exceptions and interrupts. */ __vmsetvec(_K_VM_event_vector); /* * Simulator has a few differences from the hardware. * For now, check uninitialized-but-mapped memory * prior to invoking setup_arch_memory(). */ if (*(int *)((unsigned long)_end + 8) == 0x1f1f1f1f) on_simulator = 1; else on_simulator = 0; if (p[0] != '\0') strlcpy(boot_command_line, p, COMMAND_LINE_SIZE); else strlcpy(boot_command_line, default_command_line, COMMAND_LINE_SIZE); /* * boot_command_line and the value set up by setup_arch * are both picked up by the init code. If no reason to * make them different, pass the same pointer back. */ strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); *cmdline_p = cmd_line; parse_early_param(); my_out("setup_arch() 2\r\n"); setup_arch_memory(); my_out("setup_arch() 3\r\n"); #ifdef CONFIG_SMP smp_start_cpus(); #endif #ifdef CONFIG_VT #if defined(CONFIG_VGA_CONSOLE) conswitchp = &vga_con; #elif defined(CONFIG_DUMMY_CONSOLE) conswitchp = &dummy_con; #endif #endif my_out("about to exit setup_arch()\r\n"); }
static cycle_t timer_get_cycles(struct clocksource *cs) { return (cycle_t) __vmgettime(); }
static u64 timer_get_cycles(struct clocksource *cs) { return (u64) __vmgettime(); }