Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bea96fd authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

[PATCH] uml pt_regs fixes



Real fix for UML pt_regs stuff.  Note set_irq_regs() logics in there...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e24bb60e
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@


#define LINE_BUFSIZE 4096
#define LINE_BUFSIZE 4096


static irqreturn_t line_interrupt(int irq, void *data, struct pt_regs *unused)
static irqreturn_t line_interrupt(int irq, void *data)
{
{
	struct chan *chan = data;
	struct chan *chan = data;
	struct line *line = chan->line;
	struct line *line = chan->line;
@@ -364,8 +364,7 @@ void line_unthrottle(struct tty_struct *tty)
		reactivate_chan(&line->chan_list, line->driver->read_irq);
		reactivate_chan(&line->chan_list, line->driver->read_irq);
}
}


static irqreturn_t line_write_interrupt(int irq, void *data,
static irqreturn_t line_write_interrupt(int irq, void *data)
					struct pt_regs *unused)
{
{
	struct chan *chan = data;
	struct chan *chan = data;
	struct line *line = chan->line;
	struct line *line = chan->line;
@@ -712,7 +711,7 @@ struct winch {
	struct tty_struct *tty;
	struct tty_struct *tty;
};
};


static irqreturn_t winch_interrupt(int irq, void *data, struct pt_regs *unused)
static irqreturn_t winch_interrupt(int irq, void *data)
{
{
	struct winch *winch = data;
	struct winch *winch = data;
	struct tty_struct *tty;
	struct tty_struct *tty;
+4 −4
Original line number Original line Diff line number Diff line
@@ -74,8 +74,7 @@ static void mc_work_proc(void *unused)


static DECLARE_WORK(mconsole_work, mc_work_proc, NULL);
static DECLARE_WORK(mconsole_work, mc_work_proc, NULL);


static irqreturn_t mconsole_interrupt(int irq, void *dev_id,
static irqreturn_t mconsole_interrupt(int irq, void *dev_id)
				      struct pt_regs *regs)
{
{
	/* long to avoid size mismatch warnings from gcc */
	/* long to avoid size mismatch warnings from gcc */
	long fd;
	long fd;
@@ -674,8 +673,9 @@ static void with_console(struct mc_request *req, void (*proc)(void *),
static void sysrq_proc(void *arg)
static void sysrq_proc(void *arg)
{
{
	char *op = arg;
	char *op = arg;

	struct pt_regs *old_regs = set_irq_regs(&current->thread.regs);
	handle_sysrq(*op, &current->thread.regs, NULL);
	handle_sysrq(*op, NULL);
	set_irq_regs(old_regs);
}
}


void mconsole_sysrq(struct mc_request *req)
void mconsole_sysrq(struct mc_request *req)
+1 −1
Original line number Original line Diff line number Diff line
@@ -77,7 +77,7 @@ static void uml_dev_close(void* dev)
	dev_close( (struct net_device *) dev);
	dev_close( (struct net_device *) dev);
}
}


irqreturn_t uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs)
irqreturn_t uml_net_interrupt(int irq, void *dev_id)
{
{
	struct net_device *dev = dev_id;
	struct net_device *dev = dev_id;
	struct uml_net_private *lp = dev->priv;
	struct uml_net_private *lp = dev->priv;
+2 −2
Original line number Original line Diff line number Diff line
@@ -47,7 +47,7 @@ struct connection {
	struct port_list *port;
	struct port_list *port;
};
};


static irqreturn_t pipe_interrupt(int irq, void *data, struct pt_regs *regs)
static irqreturn_t pipe_interrupt(int irq, void *data)
{
{
	struct connection *conn = data;
	struct connection *conn = data;
	int fd;
	int fd;
@@ -152,7 +152,7 @@ void port_work_proc(void *unused)


DECLARE_WORK(port_work, port_work_proc, NULL);
DECLARE_WORK(port_work, port_work_proc, NULL);


static irqreturn_t port_interrupt(int irq, void *data, struct pt_regs *regs)
static irqreturn_t port_interrupt(int irq, void *data)
{
{
	struct port_list *port = data;
	struct port_list *port = data;


+1 −1
Original line number Original line Diff line number Diff line
@@ -524,7 +524,7 @@ static void ubd_handler(void)
	do_ubd_request(ubd_queue);
	do_ubd_request(ubd_queue);
}
}


static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused)
static irqreturn_t ubd_intr(int irq, void *dev)
{
{
	ubd_handler();
	ubd_handler();
	return(IRQ_HANDLED);
	return(IRQ_HANDLED);
Loading