PageRenderTime 11ms CodeModel.GetById 7ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/ppc64/kernel/HvCall.c

https://bitbucket.org/evzijst/gittest
C | 36 lines | 23 code | 4 blank | 9 comment | 2 complexity | b94a0bbe4703b00d675b99f57c3b5476 MD5 | raw file
 1/*
 2 * HvCall.c
 3 * Copyright (C) 2001  Mike Corrigan IBM Corporation
 4 * 
 5 * This program is free software; you can redistribute it and/or modify
 6 * it under the terms of the GNU General Public License as published by
 7 * the Free Software Foundation; either version 2 of the License, or
 8 * (at your option) any later version.
 9 */
10
11#include <asm/page.h>
12#include <asm/abs_addr.h>
13#include <asm/iSeries/HvCall.h>
14#include <asm/iSeries/HvCallSc.h>
15#include <asm/iSeries/HvTypes.h>
16
17
18void HvCall_writeLogBuffer(const void *buffer, u64 len)
19{
20	struct HvLpBufferList hv_buf;
21	u64 left_this_page;
22	u64 cur = virt_to_abs(buffer);
23
24	while (len) {
25		hv_buf.addr = cur;
26		left_this_page = ((cur & PAGE_MASK) + PAGE_SIZE) - cur;
27		if (left_this_page > len)
28			left_this_page = len;
29		hv_buf.len = left_this_page;
30		len -= left_this_page;
31		HvCall2(HvCallBaseWriteLogBuffer,
32				virt_to_abs(&hv_buf),
33				left_this_page);
34		cur = (cur & PAGE_MASK) + PAGE_SIZE;
35	}
36}