~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to arch/um/sys-x86_64/shared/sysdep/stub.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2004 Jeff Dike (jdike@addtoit.com)
3
 
 * Licensed under the GPL
4
 
 */
5
 
 
6
 
#ifndef __SYSDEP_STUB_H
7
 
#define __SYSDEP_STUB_H
8
 
 
9
 
#include <sys/mman.h>
10
 
#include <asm/unistd.h>
11
 
#include <sysdep/ptrace_user.h>
12
 
#include "as-layout.h"
13
 
#include "stub-data.h"
14
 
#include "kern_constants.h"
15
 
 
16
 
extern void stub_segv_handler(int sig);
17
 
extern void stub_clone_handler(void);
18
 
 
19
 
#define STUB_SYSCALL_RET PT_INDEX(RAX)
20
 
#define STUB_MMAP_NR __NR_mmap
21
 
#define MMAP_OFFSET(o) (o)
22
 
 
23
 
#define __syscall_clobber "r11","rcx","memory"
24
 
#define __syscall "syscall"
25
 
 
26
 
static inline long stub_syscall0(long syscall)
27
 
{
28
 
        long ret;
29
 
 
30
 
        __asm__ volatile (__syscall
31
 
                : "=a" (ret)
32
 
                : "0" (syscall) : __syscall_clobber );
33
 
 
34
 
        return ret;
35
 
}
36
 
 
37
 
static inline long stub_syscall2(long syscall, long arg1, long arg2)
38
 
{
39
 
        long ret;
40
 
 
41
 
        __asm__ volatile (__syscall
42
 
                : "=a" (ret)
43
 
                : "0" (syscall), "D" (arg1), "S" (arg2) : __syscall_clobber );
44
 
 
45
 
        return ret;
46
 
}
47
 
 
48
 
static inline long stub_syscall3(long syscall, long arg1, long arg2, long arg3)
49
 
{
50
 
        long ret;
51
 
 
52
 
        __asm__ volatile (__syscall
53
 
                : "=a" (ret)
54
 
                : "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3)
55
 
                : __syscall_clobber );
56
 
 
57
 
        return ret;
58
 
}
59
 
 
60
 
static inline long stub_syscall4(long syscall, long arg1, long arg2, long arg3,
61
 
                                 long arg4)
62
 
{
63
 
        long ret;
64
 
 
65
 
        __asm__ volatile ("movq %5,%%r10 ; " __syscall
66
 
                : "=a" (ret)
67
 
                : "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
68
 
                  "g" (arg4)
69
 
                : __syscall_clobber, "r10" );
70
 
 
71
 
        return ret;
72
 
}
73
 
 
74
 
static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3,
75
 
                                 long arg4, long arg5)
76
 
{
77
 
        long ret;
78
 
 
79
 
        __asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall
80
 
                : "=a" (ret)
81
 
                : "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
82
 
                  "g" (arg4), "g" (arg5)
83
 
                : __syscall_clobber, "r10", "r8" );
84
 
 
85
 
        return ret;
86
 
}
87
 
 
88
 
static inline void trap_myself(void)
89
 
{
90
 
        __asm("int3");
91
 
}
92
 
 
93
 
static inline void remap_stack(long fd, unsigned long offset)
94
 
{
95
 
        __asm__ volatile ("movq %4,%%r10 ; movq %5,%%r8 ; "
96
 
                          "movq %6, %%r9; " __syscall "; movq %7, %%rbx ; "
97
 
                          "movq %%rax, (%%rbx)":
98
 
                          : "a" (STUB_MMAP_NR), "D" (STUB_DATA),
99
 
                            "S" (UM_KERN_PAGE_SIZE),
100
 
                            "d" (PROT_READ | PROT_WRITE),
101
 
                            "g" (MAP_FIXED | MAP_SHARED), "g" (fd),
102
 
                            "g" (offset),
103
 
                            "i" (&((struct stub_data *) STUB_DATA)->err)
104
 
                          : __syscall_clobber, "r10", "r8", "r9" );
105
 
}
106
 
 
107
 
#endif