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

« back to all changes in this revision

Viewing changes to arch/s390/kvm/sie64a.S

  • 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
 
 * sie64a.S - low level sie call
3
 
 *
4
 
 * Copyright IBM Corp. 2008,2010
5
 
 *
6
 
 * This program is free software; you can redistribute it and/or modify
7
 
 * it under the terms of the GNU General Public License (version 2 only)
8
 
 * as published by the Free Software Foundation.
9
 
 *
10
 
 *    Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
11
 
 *               Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
12
 
 */
13
 
 
14
 
#include <linux/errno.h>
15
 
#include <asm/asm-offsets.h>
16
 
#include <asm/setup.h>
17
 
#include <asm/asm-offsets.h>
18
 
#include <asm/ptrace.h>
19
 
#include <asm/thread_info.h>
20
 
 
21
 
_TIF_EXIT_SIE = (_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_MCCK_PENDING)
22
 
 
23
 
/*
24
 
 * offsets into stackframe
25
 
 * SP_  = offsets into stack sie64 is called with
26
 
 * SPI_ = offsets into irq stack
27
 
 */
28
 
SP_GREGS = __SF_EMPTY
29
 
SP_HOOK  = __SF_EMPTY+8
30
 
SP_GPP   = __SF_EMPTY+16
31
 
SPI_PSW  = STACK_FRAME_OVERHEAD + __PT_PSW
32
 
 
33
 
 
34
 
        .macro SPP newpp
35
 
        tm      __LC_MACHINE_FLAGS+6,0x20       # MACHINE_FLAG_SPP
36
 
        jz      0f
37
 
        .insn   s,0xb2800000,\newpp
38
 
0:
39
 
        .endm
40
 
 
41
 
sie_irq_handler:
42
 
        SPP     __LC_CMF_HPP                    # set host id
43
 
        larl    %r2,sie_inst
44
 
        clg     %r2,SPI_PSW+8(0,%r15)           # intercepted sie
45
 
        jne     1f
46
 
        xc      __LC_SIE_HOOK(8),__LC_SIE_HOOK
47
 
        lg      %r2,__LC_THREAD_INFO            # pointer thread_info struct
48
 
        tm      __TI_flags+7(%r2),_TIF_EXIT_SIE
49
 
        jz      0f
50
 
        larl    %r2,sie_exit                    # work pending, leave sie
51
 
        stg     %r2,SPI_PSW+8(0,%r15)
52
 
        br      %r14
53
 
0:      larl    %r2,sie_reenter                 # re-enter with guest id
54
 
        stg     %r2,SPI_PSW+8(0,%r15)
55
 
1:      br      %r14
56
 
 
57
 
/*
58
 
 * sie64a calling convention:
59
 
 * %r2 pointer to sie control block
60
 
 * %r3 guest register save area
61
 
 */
62
 
        .globl  sie64a
63
 
sie64a:
64
 
        stg     %r3,SP_GREGS(%r15)              # save guest register save area
65
 
        stmg    %r6,%r14,__SF_GPRS(%r15)        # save registers on entry
66
 
        lgr     %r14,%r2                        # pointer to sie control block
67
 
        larl    %r5,sie_irq_handler
68
 
        stg     %r2,SP_GPP(%r15)
69
 
        stg     %r5,SP_HOOK(%r15)               # save hook target
70
 
        lmg     %r0,%r13,0(%r3)                 # load guest gprs 0-13
71
 
sie_reenter:
72
 
        mvc     __LC_SIE_HOOK(8),SP_HOOK(%r15)
73
 
        SPP     SP_GPP(%r15)                    # set guest id
74
 
sie_inst:
75
 
        sie     0(%r14)
76
 
        xc      __LC_SIE_HOOK(8),__LC_SIE_HOOK
77
 
        SPP     __LC_CMF_HPP                    # set host id
78
 
sie_exit:
79
 
        lg      %r14,SP_GREGS(%r15)
80
 
        stmg    %r0,%r13,0(%r14)                # save guest gprs 0-13
81
 
        lghi    %r2,0
82
 
        lmg     %r6,%r14,__SF_GPRS(%r15)
83
 
        br      %r14
84
 
 
85
 
sie_err:
86
 
        xc      __LC_SIE_HOOK(8),__LC_SIE_HOOK
87
 
        SPP     __LC_CMF_HPP                    # set host id
88
 
        lg      %r14,SP_GREGS(%r15)
89
 
        stmg    %r0,%r13,0(%r14)                # save guest gprs 0-13
90
 
        lghi    %r2,-EFAULT
91
 
        lmg     %r6,%r14,__SF_GPRS(%r15)
92
 
        br      %r14
93
 
 
94
 
        .section __ex_table,"a"
95
 
        .quad   sie_inst,sie_err
96
 
        .quad   sie_exit,sie_err
97
 
        .quad   sie_reenter,sie_err
98
 
        .previous