亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cache.h

?? 這個linux源代碼是很全面的~基本完整了~使用c編譯的~由于時間問題我沒有親自測試~但就算用來做參考資料也是非常好的
?? H
字號:
/* *  linux/include/asm-arm/proc-armv/cache.h * *  Copyright (C) 1999-2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <asm/mman.h>/* * This flag is used to indicate that the page pointed to by a pte * is dirty and requires cleaning before returning it to the user. */#define PG_dcache_dirty PG_arch_1/* * Cache handling for 32-bit ARM processors. * * Note that on ARM, we have a more accurate specification than that * Linux's "flush".  We therefore do not use "flush" here, but instead * use: * * clean:      the act of pushing dirty cache entries out to memory. * invalidate: the act of discarding data held within the cache, *             whether it is dirty or not. *//* * Generic I + D cache */#define flush_cache_all()						\	do {								\		cpu_cache_clean_invalidate_all();			\	} while (0)/* This is always called for current->mm */#define flush_cache_mm(_mm)						\	do {								\		if ((_mm) == current->active_mm)			\			cpu_cache_clean_invalidate_all();		\	} while (0)#define flush_cache_range(_mm,_start,_end)				\	do {								\		if ((_mm) == current->active_mm)			\			cpu_cache_clean_invalidate_range((_start) & PAGE_MASK, \							 PAGE_ALIGN(_end), 1); \	} while (0)#define flush_cache_page(_vma,_vmaddr)					\	do {								\		if ((_vma)->vm_mm == current->active_mm) {		\			unsigned long _addr = (_vmaddr) & PAGE_MASK;	\			cpu_cache_clean_invalidate_range(_addr,		\				_addr + PAGE_SIZE,			\				((_vma)->vm_flags & VM_EXEC));		\		} \	} while (0)/* * This flushes back any buffered write data.  We have to clean the entries * in the cache for this page.  This does not invalidate either I or D caches. * * Called from: * 1. mm/filemap.c:filemap_nopage * 2. mm/filemap.c:filemap_nopage *    [via do_no_page - ok] * * 3. mm/memory.c:break_cow *    [copy_cow_page doesn't do anything to the cache; insufficient cache *     handling.  Need to add flush_dcache_page() here] * * 4. mm/memory.c:do_swap_page *    [read_swap_cache_async doesn't do anything to the cache: insufficient *     cache handling.  Need to add flush_dcache_page() here] * * 5. mm/memory.c:do_anonymous_page *    [zero page, never written by kernel - ok] * * 6. mm/memory.c:do_no_page *    [we will be calling update_mmu_cache, which will catch on PG_dcache_dirty] * * 7. mm/shmem.c:shmem_nopage * 8. mm/shmem.c:shmem_nopage *    [via do_no_page - ok] * * 9. fs/exec.c:put_dirty_page *    [we call flush_dcache_page prior to this, which will flush out the *     kernel virtual addresses from the dcache - ok] */static __inline__ void flush_page_to_ram(struct page *page){	cpu_flush_ram_page(page_address(page));}/* * D cache only */#define invalidate_dcache_range(_s,_e)	cpu_dcache_invalidate_range((_s),(_e))#define clean_dcache_range(_s,_e)	cpu_dcache_clean_range((_s),(_e))#define flush_dcache_range(_s,_e)	cpu_cache_clean_invalidate_range((_s),(_e),0)/* * flush_dcache_page is used when the kernel has written to the page * cache page at virtual address page->virtual. * * If this page isn't mapped (ie, page->mapping = NULL), or it has * userspace mappings (page->mapping->i_mmap or page->mapping->i_mmap_shared) * then we _must_ always clean + invalidate the dcache entries associated * with the kernel mapping. * * Otherwise we can defer the operation, and clean the cache when we are * about to change to user space.  This is the same method as used on SPARC64. * See update_mmu_cache for the user space part. */#define mapping_mapped(map)	((map)->i_mmap || (map)->i_mmap_shared)static inline void flush_dcache_page(struct page *page){	if (page->mapping && !mapping_mapped(page->mapping))		set_bit(PG_dcache_dirty, &page->flags);	else {		unsigned long virt = (unsigned long)page_address(page);		cpu_cache_clean_invalidate_range(virt, virt + PAGE_SIZE, 0);	}}#define clean_dcache_entry(_s)		cpu_dcache_clean_entry((unsigned long)(_s))/* * This function is misnamed IMHO.  There are three places where it * is called, each of which is preceded immediately by a call to * flush_page_to_ram: * *  1. kernel/ptrace.c:access_one_page *     called after we have written to the kernel view of a user page. *     The user page has been expundged from the cache by flush_cache_page. *     [we don't need to do anything here if we add a call to *      flush_dcache_page] * *  2. mm/memory.c:do_swap_page *     called after we have (possibly) written to the kernel view of a *     user page, which has previously been removed (ie, has been through *     the swap cache). *     [if the flush_page_to_ram() conditions are satisfied, then ok] * *  3. mm/memory.c:do_no_page *     [if the flush_page_to_ram() conditions are satisfied, then ok] * * Invalidating the icache at the kernels virtual page isn't really * going to do us much good, since we wouldn't have executed any * instructions there. */#define flush_icache_page(vma,pg)	do { } while (0)/* * I cache coherency stuff. * * This *is not* just icache.  It is to make data written to memory * consistent such that instructions fetched from the region are what * we expect. * * This generally means that we have to clean out the Dcache and write * buffers, and maybe flush the Icache in the specified range. */#define flush_icache_range(_s,_e)					\	do {								\		cpu_icache_invalidate_range((_s), (_e));		\	} while (0)/* * TLB flushing. * *  - flush_tlb_all()			flushes all processes TLBs *  - flush_tlb_mm(mm)			flushes the specified mm context TLB's *  - flush_tlb_page(vma, vmaddr)	flushes TLB for specified page *  - flush_tlb_range(vma, start, end)	flushes TLB for specified range of pages * * We drain the write buffer in here to ensure that the page tables in ram * are really up to date.  It is more efficient to do this here... *//* * Notes: *  current->active_mm is the currently active memory description. *  current->mm == NULL iff we are lazy. */#define flush_tlb_all()							\	do {								\		cpu_tlb_invalidate_all();				\	} while (0)/* * Flush all user virtual address space translations described by `_mm'. * * Currently, this is always called for current->mm, which should be * the same as current->active_mm.  This is currently not be called for * the lazy TLB case. */#define flush_tlb_mm(_mm)						\	do {								\		if ((_mm) == current->active_mm)			\			cpu_tlb_invalidate_all();			\	} while (0)/* * Flush the specified range of user virtual address space translations. * * _mm may not be current->active_mm, but may not be NULL. */#define flush_tlb_range(_vma,_start,_end)				\	do {								\		if ((_mm)->vm_mm == current->active_mm)			\			cpu_tlb_invalidate_range((_start), (_end));	\	} while (0)/* * Flush the specified user virtual address space translation. */#define flush_tlb_page(_vma,_page)					\	do {								\		if ((_vma)->vm_mm == current->active_mm)		\			cpu_tlb_invalidate_page((_page),		\				 ((_vma)->vm_flags & VM_EXEC));		\	} while (0)/* * if PG_dcache_dirty is set for the page, we need to ensure that any * cache entries for the kernels virtual memory range are written * back to the page. */extern void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte);/* * Old ARM MEMC stuff.  This supports the reversed mapping handling that * we have on the older 26-bit machines.  We don't have a MEMC chip, so... */#define memc_update_all()		do { } while (0)#define memc_update_mm(mm)		do { } while (0)#define memc_update_addr(mm,pte,log)	do { } while (0)#define memc_clear(mm,physaddr)		do { } while (0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合在线视频| 欧美午夜精品一区二区蜜桃 | 久久爱另类一区二区小说| 国产精品综合二区| 欧美日韩国产美| 国产精品无圣光一区二区| 日韩电影免费在线观看网站| 懂色中文一区二区在线播放| 欧美一区午夜精品| 亚洲香肠在线观看| 91色视频在线| 国产精品视频看| 国产美女在线精品| 26uuu欧美| 日韩高清在线不卡| 欧美色男人天堂| 亚洲精选视频在线| 99精品视频中文字幕| 日本一区二区高清| 国产福利视频一区二区三区| 欧美一区二区视频免费观看| 一区二区三区不卡视频| eeuss鲁片一区二区三区| 久久久欧美精品sm网站| 蜜臀久久99精品久久久久久9 | 午夜av区久久| 91福利在线观看| 一区二区三区在线影院| 91丨九色丨黑人外教| 中文字幕在线一区二区三区| 国产精品18久久久久久久久久久久| 日韩视频一区在线观看| 日本午夜精品一区二区三区电影| 欧美吞精做爰啪啪高潮| 亚洲国产精品久久久久婷婷884 | 激情综合网最新| 欧美一区二区三区在线| 亚洲成av人片一区二区| 欧美日韩国产大片| 免费成人你懂的| 久久色成人在线| 高清不卡在线观看av| 国产精品视频免费看| 色狠狠一区二区三区香蕉| 亚洲韩国精品一区| 欧美一区二区三区精品| 国产高清在线精品| 中文字幕在线观看不卡视频| 欧美在线一区二区| 日韩不卡在线观看日韩不卡视频| 欧美一级日韩免费不卡| 国产盗摄精品一区二区三区在线| 日韩一区中文字幕| 欧美日韩一区二区三区免费看| 天堂在线一区二区| 久久精品视频网| 在线观看视频一区二区| 日韩国产精品久久久| 亚洲精品一区二区在线观看| 成人精品免费视频| 亚洲线精品一区二区三区八戒| 欧美久久久影院| 国产成人自拍高清视频在线免费播放| 国产精品美女久久久久久| 欧美色大人视频| 国产一区二区成人久久免费影院| 亚洲欧洲av另类| 日韩亚洲欧美在线| 91亚洲精华国产精华精华液| 蜜臀av一区二区在线观看| 国产精品第13页| 欧美精品日日鲁夜夜添| 成人sese在线| 美女视频黄a大片欧美| 国产精品久久久久久久久久久免费看| 欧美年轻男男videosbes| 国产精品99久久久久久久vr | 在线观看网站黄不卡| 国内成人精品2018免费看| 亚洲欧美激情小说另类| 久久男人中文字幕资源站| 色爱区综合激月婷婷| 国产成人免费视| 奇米影视一区二区三区| 亚洲香蕉伊在人在线观| 日本一区二区三区高清不卡| 8v天堂国产在线一区二区| 国产成人免费视频一区| 美女一区二区久久| 亚洲成人av一区| 亚洲三级电影网站| 国产日韩影视精品| 精品理论电影在线观看| 欧美精品日韩一区| 欧美日韩精品福利| 91久久精品网| 91啪亚洲精品| av电影在线观看完整版一区二区| 久久99精品久久久久久国产越南 | 国产精品18久久久久久久久| 免费在线观看视频一区| 午夜伊人狠狠久久| 一区二区高清视频在线观看| 国产精品二三区| 国产精品久久久久影院老司| 国产日韩精品一区| 久久一日本道色综合| 久久综合一区二区| 精品久久久久久久久久久院品网 | 91免费视频观看| 91浏览器入口在线观看| 91在线视频播放| 色婷婷精品久久二区二区蜜臀av| 成人网在线免费视频| www.激情成人| 色综合久久九月婷婷色综合| 91免费版在线| 91免费国产在线| 欧美午夜在线观看| 欧美一区二区三区婷婷月色| 日韩欧美国产1| 亚洲精品一区二区三区影院| 精品国产乱码久久久久久1区2区| 日韩精品一区二区三区视频 | 成人高清视频在线| 99久久99久久久精品齐齐| av电影天堂一区二区在线| 一本大道综合伊人精品热热| 欧美亚洲国产一卡| 欧美一级片在线看| 国产欧美一区二区精品婷婷 | 欧美亚洲国产一区二区三区va| 欧美视频一区二区在线观看| 欧美精品三级在线观看| 精品国产乱码久久久久久免费| 久久久五月婷婷| 亚洲美女视频在线观看| 日日嗨av一区二区三区四区| 蜜桃视频免费观看一区| 国产成人精品免费看| 色综合久久综合网97色综合| 欧美另类久久久品| 国产蜜臀97一区二区三区| 亚洲精品成人在线| 免费在线欧美视频| 99国产精品久久久久久久久久久| 欧美午夜一区二区| 国产午夜精品久久久久久免费视| 国产精品传媒视频| 麻豆精品一区二区综合av| 国产91精品一区二区麻豆网站 | 色哦色哦哦色天天综合| 日韩亚洲欧美中文三级| 日韩一区中文字幕| 毛片av中文字幕一区二区| 91在线云播放| www成人在线观看| 亚洲在线一区二区三区| 九色综合狠狠综合久久| 在线亚洲一区观看| 久久亚洲一区二区三区明星换脸| 亚洲欧美另类在线| 国产激情精品久久久第一区二区| 欧美无砖专区一中文字| 国产精品嫩草99a| 免费观看日韩av| 日本道色综合久久| 国产精品久99| 精品一区二区三区免费播放| 欧洲亚洲国产日韩| 国产精品免费丝袜| 国产精品18久久久久久久久| 欧美日韩国产综合一区二区| 一区在线观看免费| 国产精品一区免费在线观看| 在线综合视频播放| 亚洲精品久久嫩草网站秘色| 国产电影精品久久禁18| 制服丝袜亚洲网站| 亚洲大片在线观看| 91免费视频网| 亚洲色图制服丝袜| 成人18视频日本| 国产午夜亚洲精品午夜鲁丝片| 日本中文一区二区三区| 欧美午夜影院一区| 亚洲黄色尤物视频| 色8久久人人97超碰香蕉987| 亚洲欧美自拍偷拍色图| 成人精品国产免费网站| 日本一区二区三区dvd视频在线| 久久精品国产999大香线蕉| 欧美电影在哪看比较好| 亚洲国产精品久久艾草纯爱| 日本韩国欧美三级| 亚洲一区二区三区免费视频| 色婷婷综合久久久久中文 | 国产一区欧美日韩| 欧美大片一区二区| 国产一区免费电影|