bitkeeper revision 1.737.2.1 (403a19687Hq5Q8vjslGwmnEJKF9-Sg)

hypervisor.h, time.c, hypervisor-if.h, kernel.c, entry.S:
  Sanitise hypercall numbering. Added a get-xen-version hypercall.
This commit is contained in:
kaf24@scramble.cl.cam.ac.uk committed 2004-02-23 15:16:56 +00:00
1 parent 18626a5fa6
commit b375e36223
6 files changed
+90 -58

No files matched your search

+2 -2
View File
@@ -176,12 +176,12 @@ static __inline__ int HYPERVISOR_stop(unsigned long srec)
return ret;
}
static __inline__ long HYPERVISOR_set_dom_timer(void *timer_arg)
static __inline__ long HYPERVISOR_set_timer_op(void *timer_arg)
{
int ret;
__asm__ __volatile__ (
TRAP_INSTR
: "=a" (ret) : "0" (__HYPERVISOR_set_dom_timer),
: "=a" (ret) : "0" (__HYPERVISOR_set_timer_op),
"b" (timer_arg) : "memory" );
return ret;
+7 -6
View File
@@ -704,28 +704,29 @@ nmi_io_err:
.data
ENTRY(hypervisor_call_table)
.long SYMBOL_NAME(do_set_trap_table)
.long SYMBOL_NAME(do_set_trap_table) /* 0 */
.long SYMBOL_NAME(do_mmu_update)
.long SYMBOL_NAME(do_console_write)
.long SYMBOL_NAME(do_set_gdt)
.long SYMBOL_NAME(do_stack_switch)
.long SYMBOL_NAME(do_set_callbacks)
.long SYMBOL_NAME(do_set_callbacks) /* 5 */
.long SYMBOL_NAME(do_net_io_op)
.long SYMBOL_NAME(do_fpu_taskswitch)
.long SYMBOL_NAME(do_sched_op)
.long SYMBOL_NAME(do_set_timer_op)
.long SYMBOL_NAME(do_dom0_op)
.long SYMBOL_NAME(do_network_op)
.long SYMBOL_NAME(do_network_op) /* 10 */
.long SYMBOL_NAME(do_block_io_op)
.long SYMBOL_NAME(do_set_debugreg)
.long SYMBOL_NAME(do_get_debugreg)
.long SYMBOL_NAME(do_update_descriptor)
.long SYMBOL_NAME(do_set_fast_trap)
.long SYMBOL_NAME(do_set_fast_trap) /* 15 */
.long SYMBOL_NAME(do_dom_mem_op)
.long SYMBOL_NAME(do_multicall)
.long SYMBOL_NAME(do_kbd_op)
.long SYMBOL_NAME(do_update_va_mapping)
.long SYMBOL_NAME(do_set_timer_op) /* 20 */
.long SYMBOL_NAME(do_event_channel_op)
.long SYMBOL_NAME(do_xen_version)
.rept NR_syscalls-((.-hypervisor_call_table)/4)
.long SYMBOL_NAME(sys_ni_syscall)
.long SYMBOL_NAME(do_ni_syscall)
.endr
+54 -35
View File
@@ -266,6 +266,10 @@ void cmain(unsigned long magic, multiboot_info_t *mbi)
}
/*********************************
* Various console code follows...
*/
/* VGA text (mode 3) definitions. */
#define COLUMNS 80
#define LINES 25
@@ -458,41 +462,6 @@ void printf(const char *fmt, ...)
}
void panic(const char *fmt, ...)
{
va_list args;
char buf[128];
unsigned long flags;
extern void machine_restart(char *);
va_start(args, fmt);
(void)vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
/* Spit out multiline message in one go. */
spin_lock_irqsave(&console_lock, flags);
__putstr("\n****************************************\n");
__putstr(buf);
__putstr("Aieee! CPU");
sprintf(buf, "%d", smp_processor_id());
__putstr(buf);
__putstr(" is toast...\n");
__putstr("****************************************\n\n");
__putstr("Reboot in five seconds...\n");
spin_unlock_irqrestore(&console_lock, flags);
mdelay(5000);
machine_restart(0);
}
/* No-op syscall. */
asmlinkage long sys_ni_syscall(void)
{
return -ENOSYS;
}
unsigned short compute_cksum(unsigned short *buf, int count)
{
unsigned long sum = 0;
@@ -625,6 +594,38 @@ long do_console_write(char *str, unsigned int count)
}
/*********************************
* Debugging/tracing/error-report.
*/
void panic(const char *fmt, ...)
{
va_list args;
char buf[128];
unsigned long flags;
extern void machine_restart(char *);
va_start(args, fmt);
(void)vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
/* Spit out multiline message in one go. */
spin_lock_irqsave(&console_lock, flags);
__putstr("\n****************************************\n");
__putstr(buf);
__putstr("Aieee! CPU");
sprintf(buf, "%d", smp_processor_id());
__putstr(buf);
__putstr(" is toast...\n");
__putstr("****************************************\n\n");
__putstr("Reboot in five seconds...\n");
spin_unlock_irqrestore(&console_lock, flags);
mdelay(5000);
machine_restart(0);
}
void __out_of_line_bug(int line)
{
printk("kernel BUG in header file at line %d\n", line);
@@ -633,6 +634,24 @@ void __out_of_line_bug(int line)
}
/*********************************
* Simple syscalls.
*/
long do_xen_version(int cmd)
{
if ( cmd != 0 )
return -ENOSYS;
return (XEN_VERSION<<16) | (XEN_SUBVERSION);
}
long do_ni_syscall(void)
{
/* No-op syscall. */
return -ENOSYS;
}
/*
* GRAVEYARD
*/
+13 -12
View File
@@ -49,19 +49,20 @@
#define __HYPERVISOR_net_io_op 6
#define __HYPERVISOR_fpu_taskswitch 7
#define __HYPERVISOR_sched_op 8
#define __HYPERVISOR_set_dom_timer 9
#define __HYPERVISOR_dom0_op 10
#define __HYPERVISOR_network_op 11
#define __HYPERVISOR_block_io_op 12
#define __HYPERVISOR_set_debugreg 13
#define __HYPERVISOR_get_debugreg 14
#define __HYPERVISOR_update_descriptor 15
#define __HYPERVISOR_set_fast_trap 16
#define __HYPERVISOR_dom_mem_op 17
#define __HYPERVISOR_multicall 18
#define __HYPERVISOR_kbd_op 19
#define __HYPERVISOR_update_va_mapping 20
#define __HYPERVISOR_dom0_op 9
#define __HYPERVISOR_network_op 10
#define __HYPERVISOR_block_io_op 11
#define __HYPERVISOR_set_debugreg 12
#define __HYPERVISOR_get_debugreg 13
#define __HYPERVISOR_update_descriptor 14
#define __HYPERVISOR_set_fast_trap 15
#define __HYPERVISOR_dom_mem_op 16
#define __HYPERVISOR_multicall 17
#define __HYPERVISOR_kbd_op 18
#define __HYPERVISOR_update_va_mapping 19
#define __HYPERVISOR_set_timer_op 20
#define __HYPERVISOR_event_channel_op 21
#define __HYPERVISOR_xen_version 22
/* And the trap vector is... */
#define TRAP_INSTR "int $0x82"
@@ -532,7 +532,7 @@ int set_timeout_timer(void)
alarm = __jiffies_to_st(timer->expires);
/* Failure is pretty bad, but we'd best soldier on. */
if ( HYPERVISOR_set_dom_timer(alarm) != 0 )
if ( HYPERVISOR_set_timer_op(alarm) != 0 )
ret = -1;
spin_unlock(&timerlist_lock);
@@ -294,14 +294,14 @@ static inline int HYPERVISOR_stop(unsigned long srec)
return ret;
}
static inline long HYPERVISOR_set_dom_timer(u64 timeout)
static inline long HYPERVISOR_set_timer_op(u64 timeout)
{
int ret;
unsigned long timeout_hi = (unsigned long)(timeout>>32);
unsigned long timeout_lo = (unsigned long)timeout;
__asm__ __volatile__ (
TRAP_INSTR
: "=a" (ret) : "0" (__HYPERVISOR_set_dom_timer),
: "=a" (ret) : "0" (__HYPERVISOR_set_timer_op),
"b" (timeout_hi), "c" (timeout_lo) : "memory" );
return ret;
@@ -435,4 +435,15 @@ static inline int HYPERVISOR_update_va_mapping(
return ret;
}
static inline int HYPERVISOR_xen_version(int cmd)
{
int ret;
__asm__ __volatile__ (
TRAP_INSTR
: "=a" (ret) : "0" (__HYPERVISOR_xen_version),
"b" (cmd) : "memory" );
return ret;
}
#endif /* __HYPERVISOR_H__ */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.